Skip to content

Instantly share code, notes, and snippets.

@KSHMK
Last active June 25, 2018 12:38
Show Gist options
  • Save KSHMK/fdb665b9ef90a9a92d48a89458e0147c to your computer and use it in GitHub Desktop.
Save KSHMK/fdb665b9ef90a9a92d48a89458e0147c to your computer and use it in GitHub Desktop.
2018 Whitehat Melon Write UP

Melon

Exploit Search

혹시나 exploit 코드라 하길레 flag라는 문자열이 있는지 grep으로 찾아보았다

png

양은지-경력증명서 파일이 검출되었고

png

한글 2014 뷰어에서는 오류가 났으며

png

한글 2010 에서는 깨져있는 것을 보아 이 파일이 악성코드가 있는 파일임을 알았다.

분석

hwpx 파일은 zip 구조로 되어 있으므로 zip으로 확장자를 바꾸어 열어보면 Contents/section0.xml에 문제의 익스플로잇이 있음을 알 수 있다.

png

다른 깨진 문자들은 의미없는 값이었고 color value에 있는 hex값이 익스플로잇 코드임을 알 수 있었다. 특히 마지막에 9090c35d값에서 리틀 엔디언으로 분석하면

pop ebp
ret
nop
nop

임을 알 수 있었다. 그래서 해당 컬러 헥스 코드를 리틀엔디언으로 변환한 뒤 아무 프로그램을 연뒤 hex값을 집어넣어 디버깅을 하였다.

png

첫 번째 코드 블럭에서는 eax를 원하는 메모리 위치로 옮기는 코드가 있었다.

png

두 번째 코드에서는 0x90909090으로 시작하는 부분을 찾고 이 부분을 0x406d76부분부터 0x1c만큼 xor하였다.

0x90909090의 위치를 찾는 것이 문제였지만, NOP Sled라고 생각하였고,

K = [0xA1, 0xE5, 0xF3, 0xFB, 0xCF, 0xD6, 0xA4, 0xE6, 0xA0, 0xE2, 0xE3, 0xCF, 0xE4, 0xF8, 0xA2, 0xCF, 0xE0, 0xE2, 0xA2, 0xE0, 0xA4, 0xE2, 0xA2, 0xF4, 0xCF, 0xFD, 0xA4, 0xAD]
Text = ""
for i in range(len(K)):
	T += chr(K[i]^0x90)

그 결과 **1uck_F4v0rs_th2_pr2p4r2d_m4=**라는 문자열을 얻었고, 답이 아니라 하자 뒷 글자를 n으로 바꾸어 인증에 성공하였다.

아마도 한글 2014뷰어가 아닌 한글 2014 편집기였으면 정상적인 동작을 했겠지만 나는 한글 2014 편집기가 없었기 때문에 간접적으로 분석을 하였다.

FLAG

1uck_F4v0rs_th2_pr2p4r2d_m4n

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment