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 |