반응형
webhacking.kr 문제 풀이 / Challenge(old) - 24번 문제 (100)
24번 문제입니다.
view-source를 클릭했을 때 아래와 같이 코드가 생성됩니다.
아래 코드를 보면 결국에는 @ip가 "127.0.0.1"이 출력되면 됩니다.
$ip는 $REMOTE_ADDR의 값이 넣어지고, str_replace 함수에 의해 몇몇 문자열이 변경됩니다.
$REMOTE_ADDR값은 $_COOKIE에서 가져오는 값으로 보입니다.
우선 쿠키에서 REMOTE_ADDR을 변경해 보겠습니다.
<?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>
현재 COOKIE는 PHPSESSID 값 밖에 없습니다.
REMOTE_ADDR를 만들어 ip를 입력해보겠습니다.
REMOTE_ADDR를 127.0.0.1로 입력하였더니 client ip가 1로 출력되었습니다.
(12), (7.), (0.), (..)이 다른 값으로 변경되기 때문에 1로 변경되었습니다.
=> (12)(7.)(0.)(0.)1
그러면 str_replace()를 하여도 127.0.0.1로 만들 수 있는 문구열을 찾아 입력하여 보겠습니다.
(12) => ( ), (7.) => ( ), (0.) => ( ) , (..) => (.) 으로 변경된다는 사실을 가지고 만들어 보면 아래와 같습니다.
1(12)27(7.)(..)0(0.)(..)0(0.)(..)1 => 112277...00...00...1
이렇게 입력하면 100점을 획득한 것을 볼 수 있습니다.
반응형
'WarGame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 문제 풀이 / Challenge(old) - 16번 문제 (100) (0) | 2020.10.20 |
---|---|
webhacking.kr 문제 풀이 / Challenge(old) - 26번 문제 (100) (0) | 2020.10.18 |
webhacking.kr 문제 풀이 / Challenge(old) - 18번 문제 (100) (0) | 2020.10.18 |
webhacking.kr 문제 풀이 / Challenge(old) - 17번 문제 (100) (0) | 2020.10.16 |
webhacking.kr 문제 풀이 / Challenge(old) - 15번 문제 (50) (0) | 2020.10.16 |