46번 300점짜리 sql injection문제이다. 소스코드를 살펴보면 역시 주석으로 index.phps 힌트를 주고있다.




str_replace()함수를 이용해서 공백과 "/", "*", "%" 를 모두 ""로 대체시키고

eregi()함수를 이용해서 union, select, from, challenge, 0x, limit, cash 를 필터링한다.

이 과정을 우회하면 원하는 쿼리문을 날릴 수 있다. 



처음에 나는 %가 필터링되길래 %09 %0d %0a 와 같은 공백 대체 문자들이 모두 필터링 된다고 착각했다. 하지만

level값을 넣는 <input mane=lv value=>에 넣었을때 필터링이 되지 주소창에 직접적으로 넣으면 %0a의 경우 줄 바꿈으로 넘어가기

때문에 상관이 없다.



먼저 lv값을 일부러 0을 넣어 거짓을 넣어주고 %0aor%0a를 이용해 or문 뒤에 length(id)를 이용해서 id가 5글자인 row가 

admin 이외에 여러개 있는것으로 추정된다.





직접적으로 id='admin'을 넣어줬지만 magic_quotes_gpc에 걸려 쿼트 앞에 \이 붙은걸로 보인다.




char(97,100,109,105,110)을 이용해서 문자열로 들어가게끔 해주면 된다.



'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 49번  (0) 2018.05.04
Webhacking.kr 11번  (0) 2018.05.03
Webhackin.kr 43번  (0) 2018.04.30
Webhacking.kr 5번  (0) 2018.04.30
Webhacking.kr 10번  (0) 2018.04.27

+ Recent posts