본문 바로가기

WarGame/webhacking.kr

[webhacking.kr] Challenge 46 :: SQL Injection (char함수)


▼ Challenge 46은 다음과 같습니다.



 php 코드는 다음과 같습니다.



요약해 보면, GET으로 전송하는 "lv" 값을 치환과 필터링 과정을 거쳐, Query에 Insert 하고, 

select 값 중에 $q[0], 즉 id가 "admin"이면 문제가 풀리게 됩니다.


대부분의 사람들이 처음에 "admin의 lv 값은 몇 번일까?"라고 생각할 것 입니다. 


하지만 여기서 중요한 것이  다음과 같이 단순히 id가 "admin"이면 됩니다.


lv=2 or id='admin'


모든 필터링을 우회하는 것은 성공했지만, 

Single Quotes가 먹히질 않는 것을 보니, magic_quotes_gpc가 on 되어 있는 것 같습니다.


Challenge 61번(http://limjunyoung.tistory.com/73) 처럼 16진수로 풀려고 해도, "0x"가 필터링 되어 있습니다.


 다음과 같이 Ascii Code 값을 문자로 바꾸는 char() 함수를 통해 해결하였습니다.


( 공백은 괄호를 이용하여 우회하였습니다. )