728x90

서버에 접속했을 때 이다. This is function x()>>>가 출력되며 자유롭게 입력이 가능하다.

여러가지 testcase들을 통해 접근한다.

test들을 통해 계산을 해주고 입력이 길면 Big size~를 출력해주는 것을 알 수 있다.

__file__는 파이썬 심볼로 현재 실행중인 파일의 위치와 이름을 반환해준다.

__file__을 통해 py 즉 파이썬 파일이라는 것을 알 수 있다.

open(__file__)은 현재 실행중인 파일의 주소와 정보를 출력해준다.

Mode 'r' 을 통해 읽기 모드를 지원한다는것을 알 수 있다.


open(__file__).read()를 입력하면 소스코드가 출력된다.

소스를 분석해보면

ThreadTCPServer(host,port), TreadTCPRequestHandler)     //목적지 호스트와 포트에 들어오는 request에 대해 해당 클래스에 있는 handler을 실행시킨다.


프로그램을 실행시키면

위 함수가 실행된다.

recv함수를 통해 입력을 받으면 self.data로 입력한 값이 들어가고 self.data를 x함수에 인자로 넣어준다.

입력한 데이터가 들어가는 곳이다.

지금까지는 플래그와 관련없는 프로그램이 동작하는 소스를 분석한것이다.


플래그와 관련이있는 부분은 o함수이다.

위 함수의 조건문을 충족하면 flag를 보여준다.

a는 우리가 입력할 문자열이다. 

플래그를 얻으려면 우리가 입력한 문자열과 key데이터들을 xor연산한값이 secret값과 일치해야한다.

그러므로 secret값을 hex디코딩 한 값과 key의 값을 xor연산하면 플래그가 나온다.


문제해결 소스

플래그


728x90

'CTF_writeup > 2018' 카테고리의 다른 글

Noote_ver0  (0) 2018.12.22
PCTF_2013_ropasaurusrex  (0) 2018.12.22
MMA-CTF-2-greeting  (0) 2018.12.22
Trustealth CTF easy  (0) 2018.12.22
ISITDTU_CTF_dead_note_lv1  (0) 2018.12.22

+ Recent posts