소스를 보면,
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'이 조회된다.