해당 문제의 코드를 보면 다음과 같다.



코드를 보면 memcpy를 통해 특정 메모리 영역에 있는 값을 0x2400bytes 만큼 복사한다.


해당 영역을 보면 PE 헤더가 존재하는걸 볼 수 있고 그대로 해당 메모리 영역을 덤프한뒤 다시 ida로 까보면 다음과 같은 로직이 나온다.






복호화 로직은 간단하다. 입력 값과 rand한 값을 가지고 xor한 값이 암호화된 값과 같으면 된다. 이 때 시드 값이 고정되어 있어 매번 같은 rand값이 구해지기 때문에 다음과 같이 복호화를 시도했다.


inputValue = [0x6F,0x78,0x2E,0x13,0x0C,0x35,0x00,0x7A,0x72,0x0F,0x44,0x20,0x62,0x5A,0x54,0x2E,0x3E,0x35,0x4E,0x08,0x7B]

randValue = [0x29,0x34,0x6f,0x54,0x77,0x67,0x30,0x15,0x26,0x50,0x75,0x4e,0x28,0x3f,0x37,0x6e,0x4a,0x04,0x01,0x66,0x06]

flag = ""


for i in range(0,len(inputValue)):

    flag += chr(inputValue[i]^randValue[i])


print flag



Flag = FLAG{R0oT_1nJec@t1On}








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

ROOT CTF 2017 ROOT Ransomware  (0) 2019.01.02
ROOT CTF 2018 CrackMe  (0) 2019.01.01
ROOT CTF 2018 ROOT_Process_1  (0) 2018.12.30
35C3 CTF 2018 php  (0) 2018.12.30
Codegate 2014 clone technique  (1) 2018.12.29
블로그 이미지

JeonYoungSin

메모 기록용 공간

,