Webhacking.kr 8번 문제 풀이~
8번 문제 클릭
아래와 같이
USER-AGENT
done!(1/70)
이런식으로 페이지에 접속한 숫자만큼 숫자가 카운팅 된다
소스보기를 해보자
index.phps 를 볼 수 있게되어있다 한 번 보자
전달되는 USER_AGENT 값을 받아서 여러 문자를 필터링한다.
필터링한 USER_AGENT 값으로 db에 쿼리를 날려서 결과를 q에 저장하고
mysql_fetch_array에 그 값을 전달하여 ck에 저장한다.
ck에 저장된 결과가 admin이면 문제가 해결되는듯 싶다
ck에 저장된 값이 없다면 (if(!$ck)) 부분이 실행되어
insert into lv0(agent,ip,id) values('$agent','$ip','guest')") or die("query error"); 부분이 실행된다
insert into lv0(agent,ip,id) values('$agent', '$ip', 'guest') 부분에서
insert into lv0(agent,ip,id) values('agent1', 'ip1', 'id1'), ('agent2', 'ip2', 'id2') 이런식으로 한 번의 쿼리로
여러개의 값을 넣을 수 있다
$agent는 전달 받은 값이니 agent1 위치에 agent1', 'ip1', 'id1'), ('agent2
이런식으로 전달하면 원하는 값을 추가로 넣을 수 있을 것이다
그래서 아래와 같이 User-Agent: 값에
Lure', '1', 'admin'), ('2 를 넣어보았다
아래와 같이 나온다
이제 DB에 agent가 Lure이고 ip가 1, id가 admin으로 insert 되었을 것이다
이제 agent를 Lure(admin)로 하여 다시 페이지를 요청하면..
아래와 같이 문제가 해결된다