Challenge 45 시작!
SQL Injection 문제이다. 먼저 소스코드를 보자.
addslashes() 함수로 id 와 pw 를 필터링하고 있다. 때문에 ', ", \, 널 문자는 사용하지 못한다. 그리고 if 문으로 추가적인 문자들을 필터링하고 있다.
주목할 점은 mb_convert_encoding() 함수를 이용하여 id 값을 처리한다는 것이다. 멀티 바이트를 사용하는 언어셋에서는 \(백슬래시) 앞에 %a1 ~ %fe 의 값이 들어가면 하나의 문자로 취급하게 된다.
예를 들어 guest%aa' 를 입력하게 되면 addslashes() 함수를 통해 guest%aa\' 가 되고 이 때 %aa\ 가 하나의 문자로 처리되면서 '(따옴표) 가 제 기능을 할 수 있게 된다. 때문에 이를 이용하여 addslashes() 함수를 우회하여 SQL Injection 을 수행할 수 있다.
id 가 admin 인 조건만 만족하면 되므로 다음과 같이 url 을 입력해보았다.
?id=guest%aa' or id like char(97,100,109,105,110) %23
= 은 like 로 우회하였고 admin 은 char() 을 이용하여 아스키코드로 우회하였다.
성공!!
'WarGame > webhacking.kr' 카테고리의 다른 글
Challenge 47 (0) | 2020.04.25 |
---|---|
Challenge 46 (0) | 2020.04.25 |
Challenge 43 (0) | 2020.04.24 |
Challenge 42 (0) | 2020.04.24 |
Challenge 41 (0) | 2020.04.24 |