반응형
반응형
반응형

client ip와 agent 정보를 확인할 수 있고

 

아래에는 wrong IP라고 적혀 있다. 일단 ip값을 맞추면 되는 문제라고 추측해볼 수 있다.

 

 

소스를 보자.

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
<?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>
cs

 

$ip가 127.0.0.1이 되면 문제가 풀린다.

 

extract 함수는 배열의 키값을 변수화 시켜주는 함수이다. 12행에 extract($_COOKIE); 가 있기 때문에

cookie에 REMOTE_ADDR="abcd"를 넣어주면, $REMOTE_ADDR의 값이 "abcd"가 되어 13행에서 $ip에 "abcd"값이 들어가게 된다.

 

17~20행에서 특정 문자열이 치환되는 것을 고려하여 결과가 127.0.0.1이 되는 입력값은 112277...00...00...1 이다.

 

따라서 쿠키에 REMOTE_ADDR라는 이름에 값을 112277...00...00...1으로 설정해주면 된다.

반응형
반응형

Hand of plus

100

[문제 설명] 귀여운 아오바가 Beatcoin을 채굴하려고 한다. 아오바의 그래픽 카드를 도와주자.
[출제자] 정준영(Joon)

 

 

extract($_COOKIE); 을 사용하고 있다.

구글 확장프로그램을 이용해서 각각 4개의 이름과 값으로 쿠키를 추가해주면 된다.

 

 

 

The great escape

100

[문제 설명] 요원들은 배급받은 키를 쳐야 지령을 받을 수 있다고 한다. 요원들이 받는 지령을 몰래 받아보자.
[출제자] 정준영(Joon)

 

 

1부터 1000까지 브포를 해봤다. 틀렸다. 흠....

 

이것저것 해봤는데 디렉토리 인덱싱이 가능했다.

 

패스워드 찾아서 입력해주면 플래그가 나온다.

 

 

 

핵발사 시스템

300

[문제 설명] 귀여운 아오바가 어딘가로 핵을 쏘고싶어한다. 도와주자.
[출제자] 정준영(Joon)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    if(isset($_POST["Key1"]) && isset($_POST["Key2"]) && isset($_POST["Key3"])){
        if(hash('md5',$_POST["Key1"]) == hash('crc32',$_POST["Key2"])){
            if(hash('crc32',$_POST["Key2"]) == hash("md4"$_POST["Key3"])){
                if(hash("md5"$_POST["Key1"]) == hash("md4"$_POST["Key3"])){
                    echo "<script>alert('[Suzukaze aoba says]\\nThanks a lot! I launched an nuclear to some space!\\n\\nHere\'s a little prize!\\n[FLAG HERE]');</script>"
                }elseecho "3"; Fail(); }
            }elseecho "2"; Fail(); }
        }else{echo "1";  Fail(); }
    }
    function Fail(){ echo "<script>alert('[Suzukaze aoba]\\nT.T... I want to fire nuclear...');</script>"; }
?>
cs

 

매직해시문제 https://www.whitehatsec.com/blog/magic-hashes/

 

md5(Key1) == crc32(Key2) == md4(key3)

 

Key1 = 240610708

Key2 = 2332

Key3 = 48291204

 

반응형

+ Recent posts