본문 바로가기

ctf

[CodeGate 2014 CTF] dodoCrackme

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' 카테고리의 다른 글

[CodeGate 2015 CTF] yocto  (0) 2016.07.06
[CodeGate 2014 CTF] 4stone  (0) 2016.06.24
[Plaid 2013 CTF] pork  (0) 2016.06.03
[CodeGate 2014 CTF] nuclear  (0) 2016.04.19
[CodeGate 2013 CTF] vuln200  (0) 2016.04.17