ast.literal_eval(node_or_string)은 eval()보다 안전한 방법으로 node 또는 string을 인자로 받아 적절한 strings, bytes, numbers, tuples, lists, dicts, sets, booleans, None값을 return 해 준다.


import ast
ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}") # = {'muffin': 'lolz', 'foo': 'kitty'}


메인화면이다.

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

와이어샤크로 열어서 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

1. 일반적인 os.system으로 명령

import os

os.system('ls -l')
간단한 명령을 출력하려면 위와 같이 사용 가능하나 저 결과값을 이용해서 무언가를 하기 위해서는 부적절하다. 명령 실행 결과의 성공 유무를 리턴하기 때문이라고 한다.


2. subprocess로 변수 이용

import subprocess

subprocess.call ('ls -al', shell=True)
call 메서드는 os.system처럼 간단한 명령을 출력할 수 있다. 출력값을 변수에 넣어 사용하기 위해선 check_output을 사용할 수 있다.
import subsubprocess

a = subprocess.check_output('ls', shell=True)
print a
check_output 메소드를 사용하면 결과값을 string으로 리턴하기 때문에 변수에 넣을 수 있다.


ref. http://noplanlife.com/?p=949

문제를 다운받아 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

+ Recent posts