문제 바이너리를 ida로보면 함수가 엄청 커서 헥스레이가 안된다. 근데 어셈을 보면 단순히 인풋을 1바이트씩 비교하는 로직이 반복된다.


이 때 인풋을 비교할 때 단순하게 1바이트를 비교하는 경우랑 인풋값이랑 특정 값을 xor해서 비교하는 연산 두가지 케이스로 나뉜다.




위 케이스에 맞춰서 비교하는 값들을 파이썬으로 대충 구해 쭉 출력해보면 플래그가 나온다.


solve.py

f = open("C:\Users\Administrator\Downloads\\secu","r")

contents = f.read().split("\n")

flag = ""

for i in xrange(len(contents)):

    if "cmp" in contents[i]:

        if "rbp" in contents[i]:

            tmp = contents[i-1].split(',')

            xorValue = tmp[1].replace(" ","").replace("h","")

            tmp = contents[i].split(',')

            result = tmp[1].split('h ;')

            result = chr(int("0x" + result[0].replace(" ", "").replace("h", ""), 16)^int("0x"+xorValue,16))

            flag += result

        else:

            tmp = contents[i].split(',')

            result = tmp[1].split('h ;')

            result = chr(int("0x"+result[0].replace(" ","").replace("h",""),16))

            flag += result


start = flag.find("securinets")

end = flag[start:].find("}")+1

print "[*]Find Flag = "+flag[start:start+end]




[*]Find Flag = securinets{automating_everything_is_the_new_future}


 

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

Codegate 2019 Open CTF Reversing Write up  (2) 2019.04.02
b00t2root CTF 2019 Web Writeup  (0) 2019.03.31
Securinets CTF Quals 2019 Web Writeup  (0) 2019.03.25
TAMUctf 19 Obfuscaxor  (0) 2019.03.22
Pico CTF 2018 keygen-me-2  (0) 2019.03.22
블로그 이미지

JeonYoungSin

메모 기록용 공간

,