file 명령을 통해 64bit 리눅스 환경의 바이너리임을 알 수 있다.

IDA를 통해 Import, String 등 정보를 얻기 위해 확인해보았지만 깔끔히 비어있다...

 

 

 

실행시키면 다음과 같이 password를 입력받는다.

임의의 password 를 입력하니 "Permission denied (password)." 문자열을 출력한다.

 

 

 

 

IDA를 통해 debugging을 하다보면, 키 값이 생성된다는 것을 알 수 있다.

맨 처음 풀 때는 노가다를 해서 메모리에 키 값을 찾아냈다. 좀 더 빨리 풀기위해 시도하다 password를 입력받는 곳에서 브레이포인트를 설정한다면 메모리에 키 값이 생성되있는 것을 확인할 수 있다.

 

 

 

 

바이너리 코드를 보면 이러한 키 값을 입력받기 위해 syscall 을 사용한 것을 알 수 있다.

그리고 strace를 이용하여 어디에서 입력받는지 알 수 있다.

 

 

 

 

해당 코드부분에 breakpoint를 걸고 실행하면 키 입력받는 곳에서 멈추게 된다.

 

 

 

 

 

breakpoint 지점까지 간 후, 스택을 확인해보면 다음과 같이 키 값이 생성된 것을 알 수 있다.


 

KEY : H4PPY_C0DEGaTE_2014_CU_1N_K0RE4

 

 

 

 

'CTF Writeup' 카테고리의 다른 글

[CodeGate 2015 CTF] systemshock  (0) 2016.07.30

WRITTEN BY
LuCeT3

,