본문 바로가기

WarGame/webhacking.kr

[webhacking.kr] Challenge 07 :: SQL Injection (union)


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



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



요약해 보면, GET으로 전송하는 값을 eregi() 함수를 통해 여러 문자열과 공백을 필터링을 하고, 

Random하게 생성되는 Query문에 해당 값이 Insert 되어 "2" 라는 값이 출력되면 문제가 풀리게 됩니다.


단순하게 where lv=(3-1)이라고 입력하면 풀릴 것이라 생각했지만,  

실제 DB에는 "lv=2"라는 값은 존재하지 않아 "query error" 문구가 뜨게 됩니다.


( "+" 는 URL에서 공백으로 해석되어 php에서 space로 인식됩니다. )


소스 제일 위에 union을 사용하라는 Hint가 있습니다.


그래서 다음과 같이 입력했더니 성공하였습니다.


val=3)union(select(3-1)


( Query의 괄호 갯수가 Random하게 생성되니 "$rand==1"이 될 때까지, 반복 하셔야 합니다. )