본문 바로가기
Security/Reversing

[CodeEngn] CodeEngn Basic RCE L10

by 단월໒꒱ 2022. 6. 25.

10번 문제이다.

 

 

 

 

OEP 주소와 '등록성공'으로 가는 분기점의 OPCODE를 구하라고 한다.

 

OPCODE는 디버거에서 주소가 표시되는 창과 어셈블리 명령이 표시되는 창 사이의 숫자로 나타나는 코드를 의미한다.

그러니까, 컴퓨터가 실행할 연산의 종류를 나타낸다.

 

 

아무튼 프로그램도 한번 실행시켜봤다.

 

 

 

 

그렇단다. 어차피 뭘 입력해도 지금은 아무 소용 없으니까 다음 단계로 넘어가자.

 

 

일단 패킹되어있는 것 같으니 Exeinfo로 패킹 정보를 확인해보았다.

 

 

 

 

처음 보는 Aspack으로 패킹되어있다.

 

구글링을 해보니 Aspack 패킹은 PUSHAD -> 복호화 코드 실행 -> POPAD -> Return 0C -> OEP 값 PUSH -> Return으로 OEP 주소로 이동한다고 한다.

 

일단 Ollydbg로 파일을 열어보았다.

 

 

 

 

역시 제일 처음 부분에 PUSHAD가 있다.

 

다음으로 POPAD를 찾아보았다.

 

 

 

 

찾아보았는데 너무 많다...

차선책으로 RETN 0C를 찾아보자.

 

 

 

 

딱 하나 있어서 여기로 이동해주었다.

 

RETN 0C에 BP를 걸고 실행해보자.

 

실행했는데 계속 렉이 걸려서 다른 방법을 찾아보았다....

 

 

프로그램을 실행시킨 후 ESP에서 Follow in Dump를 눌러줬다.

 

dump 창에서 앞쪽의 바이트들을 드래그한 후에 하드웨어 BP를 걸어주고 F9로 실행시켜주었다.

 

 

 

 

그러면 위와 같은 곳으로 이동하게 된다. 위에 POPAD도 있고 아래에 RETN 0C도 있다.

 

쭉 내려가서 RETN으로 들어가준다.

 

 

 

 

그러면 위와 같은 화면이 뜨는데 Ctrl + A를 눌러 언패킹을 완료해준다.

 

 

 

 

그러면 OEP 주소는 00445834이다.

 

다음으로 찾을 건 등록성공으로 가는 분기점의 OPCODE이다.

 

 

 

 

문자열 검색을 해서 적당해보이는 문자열을 찾았다. 이동해주자.

 

 

 

 

이것도 하나의 분기점이라 분명 앞에 JMP가 있을 거라 생각했는데, 예상대로 앞쪽에 JMP가 있었다.

그러므로여기가 등록성공으로 가는 분기점이라고 할 수 있다.

따라서 OPCODE는 7555이다.

 

결론적으로 답은 004458347555이다.

 

 

 

 

 

 

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

[CodeEngn] CodeEngn Basic RCE L12  (0) 2022.06.25
[CodeEngn] CodeEngn Basic RCE L11  (0) 2022.06.25
[CodeEngn] CodeEngn Basic RCE L08  (0) 2022.06.25
[CodeEngn] CodeEngn Basic RCE L06  (0) 2022.06.25
[Dreamhack Reverse Engineering] STAGE 6  (0) 2022.05.17

댓글