728x90
반응형
728x90
반응형
728x90
반응형

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으로 설정해주면 된다.

728x90
반응형
728x90
반응형

SuNiNaTaS의 24번문제 풀이입니다. 


[SYSTEM]




파일이 하나 있다.



압축파일이다.



apk파일 이었나보다.


dex2jar 을 이용해서 dex파일을 jar파일로 디컴파일 해주어야 한다.


dex2jar은 아래 링크에서 다운받을 수 있다.



classes.dex파일을 dex2jar폴더에 옮겨두고 해당 경로에서

cmd에 다음 명령어를 입력해 준다:

윈도우는 .bat을, 그 외에는 sh파일을 사용해주면 된다.


d2j-dex2jar.bat classes.dex


그럼 jar파일이 하나 생긴다.


jar내부의 class 파일들을 java코드로 읽을 수 있도록 해야한다.


JD-GUI 라는 프로그램을 통해 class 파일을 java코드로 볼 수 있다.




코드를 보자


if (paramAnonymousView.toString().equals("WE1C0mEToandr01d".toString()))

        {

          paramAnonymousView = new Intent("android.intent.action.VIEW", Uri.parse("http://www.suninatas.com/Part_one/web24/chk_key.asp?id=" + ((Editable)localObject1).toString() + "&pw=" + ((Editable)localObject2).toString() + "&key=" + paramAnonymousView.toString()));



어떤 문자열이 WE1C0mEToandr01d와 같은지 비교를 하고 있고


맞는 경우 웹에 접속해 값을 파싱해 오는 것으로 보인다.


http://www.suninatas.com/Part_one/web24/chk_key.asp?id=&pw=&key=


id, pw, key값을 받는다


id와 pw는 suninatas계정의 id와 pw인것 같고, key는 위에서 비교한 값인 WE1C0mEToandr01d인 것 같다.


....

분명 올바르게 입력했는데 틀렸다고 한다.



다른 분들의 풀이를 보니 폰에 apk파일을 설치해서 해야 authkey가 정상적으로 날라온다고 한다.


처음에 받은 파일의 확장자 명을 apk로 바꾸고 폰에 설치했다.



id,pw,key를 입력하니 웹페이지로 이동되어 authkey를 확인할 수 있었다.




728x90
반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [FORENSIC 26번] 풀이  (0) 2018.08.07
SuNiNaTaS [SYSTEM 25번] 풀이  (0) 2018.08.06
SuNiNaTaS [WEB 23번] 풀이  (0) 2018.08.05
SuNiNaTaS [WEB 22번] 풀이  (0) 2018.08.03
SuNiNaTaS [FORENSIC 21번] 풀이  (0) 2018.08.03

+ Recent posts