webhacking.kr 1번 문제 풀이
webhacking.kr 의 첫번째 문제..
문제접속 : http://webhacking.kr/index.php?mode=challenge&no=1
다음과 같은 화면이 나타난다.
URL 메뉴에 링크가 걸려있어서 클릭하면 다음 페이지로 연결된다.
http://webhacking.kr/challenge/web/web-01/
index.phps 클릭 시 해당문제의 소스가 제공된다.
http://webhacking.kr/challenge/web/web-01/index.phps
<? if(!$_COOKIE[user_lv]) { SetCookie("user_lv","1"); echo("<meta http-equiv=refresh content=0>"); } ?> <html> <head> <title>Challenge 1</title> </head> <body bgcolor=black> <center> <br><br><br><br><br> <font color=white> ---------------------<br> <?
$password="????";
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>5) @solve();
echo("<br>level : $_COOKIE[user_lv]");
?> <br> <pre> <a onclick=location.href='index.phps'>----- index.phps -----</a> </body> </html> |
소스를 봤을 때 해당 문제는 Cookie 조작 문제임을 알 수 있다.
소스 중 핵심 구문을 살펴보면 다음과 같다.
1) 숫자 , . 만 허용한다.
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1; |
2) Cookie 변수 user_lv가 6이상이면 user_lv는 1이고
User_lv가 5를 초과할 경우 level1을 통과할 수 있다.
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1; if($_COOKIE[user_lv]>5) @solve(); |
결국 5초과, 6미만의 값을 넣으면 된다.
해당 소스에서 피리어드(.)의 입력이 가능하므로 5.5를 입력하도록 하자
Cookie를 조작하여 user_lv 값으로 5.5를 입력한다.
Congraturation과 함께 level 통과 및 200점 획득
level clear!!
'Wargames > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 59번 문제 풀이 (0) | 2018.01.15 |
---|---|
[webhacking.kr] 56번 문제 풀이 (0) | 2018.01.14 |
[webhacking.kr] 23번 문제 풀이 (0) | 2018.01.13 |
[webhacking.kr] 15번 문제 풀이 (0) | 2017.05.04 |
[webhacking.kr] 25번 문제 풀이 (0) | 2017.04.01 |