old-24_풀이

2021. 6. 6. 16:32문제연습/webhacking.kr

반응형

 

본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

old-24_풀이

본 네이버 블로그는 모바일 환경에 최적화되어 있습니다. PC 유저분들은 아래 티스토리 블로그를 이용해 ...

blog.naver.com

 

Webhacking.kr

old-24번 문제풀이

 

이번 문제는 취약한 인증과 쿠키에 대한 지식을 묻고 있습니다.

잘못된 검증 로직으로 인한 취약점을 다룬 문제이니 꼭 한번 풀어보시는 것을 추천드립니다.

 

 

1. 접속 화면

접속 컴퓨터의 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>

 

- php 코드 부분 -

<?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>";
}
?>

 

코드 내용을 요약하자면, ip 필터를 거친 후 접속 ip를 127.0.0.1로 인식하게 하면 문제 풀리게 됩니다.

 

 

- burp suite - http request -

역시 눈에 띄는 정보는 쿠키가 전부인 듯합니다.

일단 코드를 조금 더 자세히 알아봐야겠습니다.

 

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);
}

-> 여기서 우리가 주목해야 할 곳은 바로 extract 부분입니다.

extrack의 정보는 아래 링크를 이용해 주시길 바랍니다.

 

php extract()함수에 대하여 . .-

extract()함수는 배열 속의 키값을 변수화 시켜주는 함수이다. 예를 들어 $a[x] = 111; $a[y] = 222; 에서 extract(a) 할 경우 x = 111, y = 222가 되는 것이다.     ->    그러면 소스에 extract($_GET)이..

bbolmin.tistory.com

 

 

2. Solution

extrack 함수를 이용해 ip 값을 조작하여 필터를 우회하는 방법을 설명드리겠습니다.

쿠키 이름을 REMOTE_ADDR로 넣어 주고 필터를 우회하기 위해 다음 값을 넣어 줍니다.

 

112270...00...00...1

 

이렇게 쿠키 값을 조작하면 필터 우회되어 원하는 결과가 나온 모습입니다.

 

Clear!!!

 

반응형

'문제연습 > webhacking.kr' 카테고리의 다른 글

old-21_풀이  (0) 2021.06.12
old-12_풀이  (0) 2021.06.10
old-38_풀이  (0) 2021.06.06
oid-32_풀이  (0) 2021.06.05
oid-10_풀이  (0) 2021.06.05