2016 trend micro ctf rev100 writeup

Reversing/리버싱 문제풀이

2016. 8. 1. 16:35

휴가때문에 피곤해서 늦게 풀었당(술..)



문제파일을 보면 아무형식이아닌 그냥 data 파일이다.




하지만 ida에서 열어보면 함수들이 많이 들어있다.

main함수처럼 보이는 것을 먼저 찾아보았다.


조금 내리다 보니 메인같은 함수 몇개가 보였다.

안에 함수 호출을 적당히 따라가다보면 이상한곳으로 계속가는데 무시하고 보다보면 바로 의심스러운 부분이나온다.



이렇게 시작하는 함수인디 밑에를 보면 확실히 뭔가 문자열과 관련된거 같다.




함수첫번째 인자에 값을 넣어서 flag를 구하는거 같다.

함수 첫번재 인자가 무엇인지 추적해봤다.






이상한 값이 있다.

왠진 모른다 문제를 만들면서 그냥 어떻게 됬나보다(pie나 symbol table이나 뭐 관련있으려나..)


무튼 그래서 그냥 제일 앞에 값이 TMCTF이런식일테니까 T - K = 9

arg_0 = 9로 정하고 계산을 하였다.


그냥 저 함수 긁어서 add함수 두번째 오퍼랜드에 9씩더해서 출력하니 플래그가 나왔다.



import re

if __name__ == '__main__' :
    data = open('ida.asm', 'rb').read().split('\n')[:-1]
    arg_0 = 9
    flag = ''
    for asm in data :
        tmp = re.search('(add\s+\w+\,\s)(\w+)h', asm)
        if bool(tmp) :
            flag += chr(int(tmp.group(2), 16) + arg_0)
    print flag



ㅇㅅㅇ ...