webhacing.kr 24(old)
webhacing.kr 24번 문제는 str_replace취약점 공격와 관련된 문제로 보여집니다.
24번 문제 사이트에 접속해봅시다.
사이트를 살펴보니 클라이언트(우리) 의 ip 와 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>
소스를 한번 분석해보도록 합시다.
extract($_SERVER);
extract($_COOKIE);
$ip = $REMOTE_ADDR; //ip에 REMOTE_ADDR에 정보를 받는다.
$agent = $HTTP_USER_AGENT;
if($REMOTE_ADDR){
$ip = htmlspecialchars($REMOTE_ADDR); //
// htmlspecialchars는
이 함수는 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환한다. 이함수를 사용하면 악성 사용자로 부터 XSS 공격을 방지 할 수 있다.
$ip = str_replace("..",".",$ip); //..을 .으로교체
$ip = str_replace("12","",$ip); //12를 공백으로 교체
$ip = str_replace("7.","",$ip); //7을 공백으로 교체
$ip = str_replace("0.","",$ip); //0을 공백으로 교채
}
if($HTTP_USER_AGENT){
$agent=htmlspecialchars($HTTP_USER_AGENT);
}
echo"<tableborder=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"){
//위에서 REMOTE_ADDR의 변환된값이 127.0.0.1라면 성공이다.
solve(24);
exit();
}
else{
echo "<hr><center>Wrong IP!</center>";
이 문제를 풀기 위해서는 = str_replace의 취약성에 대해 알아야 한다.
이 = str_replace은 일회성으로 사용되기 떄문에
127.0.0.1=112277...00...00...1
이 된다.
이 값을 editthiscookie를 이용하여 넣어주면
(오류라도 생긴건지 되지 않았다.)
직접 차근차근 숫자를 바꿔가며 값을 조정해보았다.
(내가 계산을 실수 했을 수도..)
로 하니
성공
webhacing.kr 24(old)성공~!
'웹해킹 > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 26번(old) 풀이 (0) | 2020.06.01 |
---|---|
Webhacking.kr 25번(old) 풀이 (0) | 2020.06.01 |
Webhacking.kr 23번(old) 풀이 (0) | 2020.05.31 |
Webhacking.kr 18번(old) 풀이 (0) | 2020.04.15 |
Webhacking.kr 19번(old) 풀이 (0) | 2020.04.15 |