본문 바로가기

Reversing/CodeEngn

[CodeEngn] Basic RCE L10풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

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

ch.codeengn.com


 

문제

문제를 확인해보니 ‘등록 성공’으로 가는 OPCODE를 구해서 OEP+OPCODE를 하라고 한다.

문제는 실행시켰더니 아무것도 입력이 안된다.

 

그리고 Exeinfo를 돌렸는데,,, 이런 건 처음 본다,,, aspackdie가 뭐야,,,

찾아보니 upx랑 똑같이 언패킹 해도 된다고 하는데, OEP 찾는 연습도 할 겸 언패킹은 하지 않았다.

exeinfo

X32 디버거로 분석해보았다.

 

파일을 열어서 일단 POPAD를 찾아주었다.

꽤 많이 내려와야 있었다.

popad

그리고 POPAD에 BP를 걸고 실행시켰더니 아래 그림의 PUSH값이 바뀌었다.

JNE 10.4564FC가 아래의 PUSH 부분으로 가는 것이고 따라서 OEP는 445834임을 알 수 있었다.

이제 아래의 RET에도 BP를 걸고 OEP로 이동해보았다.

F8로 계속 실행시키다 보면 ret에서 자동으로 OEP 주소로 넘어간다.

그리고 문자열 찾기를 확인해보았다.

문자열 찾기

맨 아래로 쭉 내려오다보니 Registered… well done!이라는 성공 문구가 있는 것을 확인할 수 있었다.

그런데 여기에서 더블클릭해서 이동하려고 하면 자꾸 헥스창이 빨간색으로 깜빡거리면서 이동이 되지 않는다…

그래서 검색해보니 마우스 오른쪽을 눌러서 ‘디스어셈블러로 따라가기’로 들어가라고 하길래 했더니 이동이 되었다!

 

 

이동이 잘 되었고, 문제에서 등록성공으로 가는 분기문의 OPCODE를 구하라고 했으니

 

조금 위의 JNE 부분의 OPCODE를 보면 75 55라고 되어있는 것을 알 수 있고, OEP+OPCODE를 해주면 문제가 해결된다.

 

 

OEP : 445834

OPCODE : 75 55

 

FLAG : 4458347555

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L12풀이  (0) 2021.08.18
[CodeEngn] Basic RCE L11풀이  (0) 2021.08.18
[CodeEngn] Basic RCE L09풀이  (0) 2021.08.18
[CodeEngn] Basic RCE L08풀이  (0) 2021.08.18
[CodeEngn] Basic RCE L07풀이  (0) 2021.08.18