write-up/webhacking.kr

8번

범고래_1 2016. 4. 9. 15:34



소스를 보면,

User-Agent에서 .과 /를 모두 _로 바꾸고 있다. 이를 useragent1이라 하자.

그리고 또 User-Agent에서 '과 "를 모두 없애고 있다. 이를 useragent2라고 하자.

테이블에 insert문으로 (agent, id, ip) values (useragent1, ip, 'guest')를 넣는다.

select문으로 where agent=useragent2를 가져와서, id='admin'이면 클리어이다.

insert문에서 id컬럼에는 강제적으로 'guest'를 넣고있으므로, User-Agent를 주작해서 id컬럼에 'admin'을 넣어야 한다.

참고로 select문을 70번 실행하면 table을 delete한다.


SERVER변수에는 magic_quote_gpc가 적용이 안 되므로 User-Agent를 이용하면 쿼리를 충분히 변조할 수 있다.

User-Agent를 

1', 내ip, 'admin')#로 해주면, 전체 쿼리는

insert into lv0 (agent,ip,id) values('1', 내ip, 'admin') #','$ip','guest')

성공적으로 삽입이 완료된다.


이제 User-Agent를 1로 변조한 후 새로고침하면 

select id from lv0 where agent='1'

위와 같은 쿼리가 날아가면서 성공적으로 id='admin'이 조회된다.


'write-up > webhacking.kr' 카테고리의 다른 글

51번  (0) 2016.04.09
45번  (0) 2016.04.09
56번  (0) 2016.04.09
53번  (0) 2016.04.09
40번  (0) 2016.04.06