
1. 문제 정보
- 문제 번호 : old -24
- 문제 점수 : 10점
2. 문제 분석

client 아이피랑 agent가 나오고 wrong ip가 나온다. 코드는 아래와 같다.
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 24</title>
</head>
<body>
<p>
<?php
extract($_SERVER);
extract($_COOKIE);
$ip = $REMOTE_ADDR;
$agent = $HTTP_USER_AGENT;
if($REMOTE_ADDR){
$ip = htmlspecialchars($REMOTE_ADDR);
$ip = str_replace("..",".",$ip);
$ip = str_replace("12","",$ip);
$ip = str_replace("7.","",$ip);
$ip = str_replace("0.","",$ip);
}
if($HTTP_USER_AGENT){
$agent=htmlspecialchars($HTTP_USER_AGENT);
}
echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
if($ip=="127.0.0.1"){
solve(24);
exit();
}
else{
echo "<hr><center>Wrong IP!</center>";
}
?><hr>
<a href=?view_source=1>view-source</a>
</body>
</html>
_server와 _cookie값을 추출해서 ip값으로 쓴다.
_cookie값으로 Remote_addr을 써서 검사를 통과해야한다. .., 12,7. 0.을 공백으로 바꾼다.
$ip = htmlspecialchars($REMOTE_ADDR);
$ip = str_replace("..",".",$ip);
$ip = str_replace("12","",$ip);
$ip = str_replace("7.","",$ip);
$ip = str_replace("0.","",$ip);
3. 풀이
replace를 통과하고 if($ip=="127.0.0.1")에 통과하기 위해서
112277.12.0012.12.00.12.1를 REMOTE_ADDR에 cookie값으로 입력하면 통과한다.


4. 요약
- extract($_SERVER) 뒤에 extract($_COOKIE)가 나와서 $REMOTE_ADDR 변수를 조작 가능한 쿠키 값으로 덮어 씌웠다.
- str_replace가 .. → 12 → 7. → 0. 순으로 문자열을 지우는 점을 역이용했다.
- 최종 Payload 쿠키 헤더에 REMOTE_ADDR=112277.12.0012.12.00.12.1을 입력해 전송하면 문제가 풀린다.
'워게임 > webhacking.kr' 카테고리의 다른 글
| [webhacking.kr] old-26문제 (0) | 2026.01.22 |
|---|---|
| [webhacking.kr] old-54 문제 (0) | 2026.01.21 |
| [webhacking.kr] old-32 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-14 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-17 문제 (0) | 2026.01.20 |