Yozzang의 해킹일기 💻
article thumbnail
728x90

이번 포스트에서는 Lord of SQLInjection의 zombie_assassin문제에 대해 다루겠다.

 


문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다.

zombie_assassin

## 문제 해석 : 

해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있으며, addslashes() 함수를 통해 특수문자에 역슬래시(\)를 붙여주는 것과 strrev() 함수를 통해 우리가 입력한 값을 거꾸로 출력하게 만든 것을 알 수 있다.

또한 id값이 존재할 때만 문제를 해결할 수 있는 것으로 보인다.

 

## 문제 풀이 : 

먼저 해당 문제가 어떻게 동작하는지를 눈으로 확인하기 위해 아무 값을 넣어서 공격해보겠다.

### 사용할 공격문 : id='&pw=hello

### 실행 결과 : 

1차 시도

예상했던 대로 '를 입력했더니 뒤에 \(역슬래시)가 붙고, pw에 "hello"를 입력했지만 "olleh"라는 거꾸로 된 문자열이 출력된 것을 확인할 수 있다.

 

특수문자를 입력할 때마다 역슬래시가 붙는 것을 활용하여 &pw=까지 id값으로 바꿔서 공격을 해보겠다.

### 사용할 공격문 : id="&pw=%23 1 ro

### 실행 결과 : 

공격 성공

## 추가 해석 :

쿼리문 : id="&pw=%23 1 ro

해당 쿼리문을 역슬래시(\)를 이용하여 뒤에 오는 '(싱글 쿼터)를 문자로 만들었다. 즉 id의 값이 ""\' and pw="이다. 이렇게 만든 다음에 "or 1 #"을 추가함으로 해당 쿼리를 항상 True를 반환할 수 있게끔 만들면 공격에 성공할 수 있다.

profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!