shpik's world!

[TrendMicroCTF 2016] Reversing -100pts

0x400 CTF

주어진 dataloss파일을 ida를 통해 열어보았고 뭔가 문자열을 때려 박는거 같은 sub_278함수를 찾았다.

이 함수의 호출을 다음과 같이 알아보았다.


[ sub_468 ]

[ loc_614 ]


[ sub_26E0 ]


sub_278을 호출할 때, sub_468의 인자값(arg_0)를 넘긴다.

sub_468을 호출할 때는 sub_26E0의 리턴 값의 포인터 값을 이용해 호출한다.

sub_26E0은 413D14h값을 리턴한다.

우선 sub_278에서 떄려박은 값들을 모아보았다.



sub_278을 호출할 때 인자값은 알기 어려울거 같아 플래그 양식인 TMCTF{~~}에 맞춰 첫번째 문자 K가 T가 나오게 만들어지도록 각 값에 +9를 파이썬을 이용해 계산해보았다.


shpik@shpik:/ctf/trend/reversing$ python

Python 2.7.11+ (default, Apr 17 2016, 14:00:29) 

[GCC 5.3.1 20160413] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> a = [0x4B,0x44,0x3A,0x3D,0x72,0x74,0x5B,0x58,0x6B,0x58,0x63,0x66,0x6A,0x6A,0x6E,0x66,0x65,0x6B,0x6A,0x6B,0x66,0x67,0x6C,0x6A]

>>> ''.join([chr(i+9) for i in a])

'TMCF{}datalosswontstopus'