[Webhacking.kr] 24번

2017. 9. 6. 22:41

 

client ip

1**.***.***.***

agentMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36


Wrong IP!


문제 내용은 저렇다.  (ip는 혹시 몰라서 모자이크 처리함)


소스보기를 해서 보니 주석으로 <!-- source : index.phps --> 와 같은 내용이 있었다. index.phps를 보자.



내용은 아래와 같다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<html>
<head>
<title>Challenge 24</title>
</head>
<body>
<?
 
extract($_SERVER);
extract($_COOKIE);
 
if(!$REMOTE_ADDR$REMOTE_ADDR=$_SERVER[REMOTE_ADDR];
 
$ip=$REMOTE_ADDR;
$agent=$HTTP_USER_AGENT;
 
 
if($_COOKIE[REMOTE_ADDR])
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
 
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();
}
 
else
{
echo("<p><hr><center>Wrong IP!</center><hr>");
}
?>
 
 
 
<!--
source : index.phps
-->
 
</body>
</html>
cs


일단 코드를 분석하자.


extract() 함수는 배열 속의 키값을 변수화 시켜주는 함수이다. (http://php.net/manual/kr/function.extract.php)

extract(array) : array의 key값의 이름으로 변수를 만듬. 변수의 값은 key값에 대응하는 값. ex) extract($_COOKIE) => $REMOTE_ADDR = $_COOKIE['REMOTE_ADDR']


$_SERVER[REMOTE_ADDR] : 현재 페이지를 보고있는 시스템의 ip 주소

$_SERVER[HTTP_USER_AGENT] : 클라이언트의 접속 환경 정보(브라우저 정보 등)


그러므로 extract으로 변수들을 생성하고 $ip=$REMOTE_ADDR; 의 ip를 str_replace 함수를 거쳐서 ip값을 필터링시킨다.


필터링되는 값은 "12", "7." , "0." 으로 모두 "127.0.0.1"이라는 ip를 만드는데 방해하기 위해 사용된다.


일단 쿠키값 변조를 통해 REMOTE_ADDR 값으로 ip주소를 넣고 또 이값이 필터를 거쳐서 "127.0.0.1"이 되게 만들면 될것같다.


112277..00..00..1 이렇게 넣으면 필터를 거쳐서 127.0.0.1이 될 것같다.


EditThisCookie 툴을 이용해서 REMOTE_ADDR 이름의 쿠키를 만들고 값을 112277..00..00..1로 설정했다.




You have cleared the 24 problems.

Score + 100



문제가 풀렸다.


참고로 javascript를 이용해서도 쿠키변조가 가능하다.


javascript:alert(document.cookie="REMOTE_ADDR=112277..00..00..1");


아니면 크롬 개발자 도구에서 Console 창에서 javascript:document.cookie="REMOTE_ADDR=112277..00..00..1";를 입력하는 방법도 있다.


근데... 다른 쿠키값들이 다 변조되서 티스토리 로그아웃되는 등 곤란한점이 있다 ㅠ;

'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글

[Webhacking.kr] 26번  (0) 2017.09.06
[Webhacking.kr] 25번  (0) 2017.09.06
[Webhacking.kr] 19번  (0) 2017.09.06
[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04
[Webhacking.kr] 17번  (0) 2017.09.04

+ Recent posts