CodeEngn Write Up/Advance

CodeEngn Advance RCE L06 Write Up

서원근양학계정 2022. 5. 19. 19:21

남은 군생활은 몇일 인가
정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com

 

먼저 문제 파일을 실행시켜보겠습니다.

 

1이 뜨네요.

확인을 눌러보겠습니다.

 

계속 확인을 눌러봤더니 790까지 뜨고 꺼지는 것을 확인할 수 있습니다.

×키를 눌러도 꺼지지 않으니 작업 관리자를 켜서 꺼주겠습니다.

 일단 ExeinfoPE를 이용해서 정적 분석을 진행하겠습니다.

 

UPX로 패킹이 되어있네요.

UPX 언패킹 도구를 이용해서 언패킹을 해주겠습니다.

 

이제 OllyDBG를 이용해서 동적 분석을 진행해보겠습니다.

실행시키니까 이런 창이 뜹니다.

 

IsDebuggerPresent함수를 찾아서 무력화시켜줍니다.

 

Message가 들어간 모든 함수에 BP를 걸어줍니다.

 

그러면 한 부분에서 멈춥니다.

EBP의 값을 주소로 한 곳에 값이 들어있는 것을 확인할 수 있습니다.

 

이제부터 그 값과 비교하는 부분을 찾아서 답을 구해야 합니다.

하지만 침착하게 코드를 실행시키고 HW BP도 걸어보고 많은 수단을 동원했지만 결국은 실패했습니다.

그러다가 모든 switch문에 BP를 걸고 분석하다가 찾게 되었습니다.

 

정말 쉽지 않았습니다.

0xD를 0x316과 비교하는 모습을 볼 수 있는데 이를 10진수로 바꾸면 790입니다.

정답 인증은 MD5 해시값으로 변환해야 하므로 변환하겠습니다.

 

Flag: 2dace78f80bc92e6d7493423d729448e

'CodeEngn Write Up > Advance' 카테고리의 다른 글

CodeEngn Advance RCE L08 Write Up  (3) 2022.05.29
CodeEngn Advance RCE L07 Write Up  (8) 2022.05.28
CodeEngn Advance RCE L05 Write Up  (2) 2022.05.19
CodeEngn Advance RCE L04 Write Up  (4) 2022.05.18
CodeEngn Advance RCE L03 Write Up  (4) 2022.05.18