※ 작년에 작성한 라이트업입니다. ※
Basic RCE L10
OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오.
정답인증은 OEP + OPCODE
EX) 00400000EB03
1. PEiD를 통해서 10.exe가 aspack으로 패킹이 되어있는 것을 확인할 수 있다.
http://blog.naver.com/PostView.nhn?blogId=suljang2&logNo=140201560221&parentCategoryNo=&categoryNo=23&viewDate=&isShowPopularPosts=true&from=search 사이트를 참고해서 언패킹을 진행했다.
2. 10.exe파일을 올리 디버거로 열어보았다. PUSHAD로 시작하는 것을 확인할 수 있다. PUSHAD로 시작하는 것은 aspack으로 패킹된 파일의 특징이다.
3. F8을 누른 후 ESP에서 Follow in Dump를 선택한다.
4. dump창에서 드래그를 한 후 Breakpoint-Hardware, on access-Dword를 선택한다.
5. f9로 실행해주면 JNZ~부분으로 이동하게 된다. 상단의 POPAD가 있다.
6. RETN으로 들어가면 하단과 같은 화면이 뜨는데 이는 올리 디버거가 분석을 하지 못했을 때 나타나는 화면이다. 여기서 ctrl+A를 눌러주면 언패킹이 완료된다.
7. 언패킹이 완료되었다. OEP는 00445834가 된다. 이제 이제 두번째 문제인 등록 성공으로 가는 분기점의 OPCODE를 찾아야 한다.
8. 텍스트를 확인해보았다. “Resisterd … well done!”이라고 등록에 성공했을 때 등장하는 문자열이 보인다. 이것을 더블 클릭한다.
9. 등록 성공 메시지에서 조금 위로 올려보면 점프문이 하나 등장한다. 이 점프문에 걸릴 경우 등록 성공 메시지를 띄우는 부분을 건너뛰게 되므로 이 코드가 등록성공으로 가는 분기점임을 알 수 있다. 이 코드의 OPCODE 7555이므로 이 문제의 정답은 004458347555가 된다.
'CTF > 리버싱' 카테고리의 다른 글
CodeEngn(코드엔진) basic 12 (0) | 2020.06.25 |
---|---|
CodeEngn(코드엔진) basic 11 (0) | 2020.06.25 |
CodeEngn(코드엔진) basic 09 (0) | 2020.06.25 |
CodeEngn(코드엔진) basic 08 (0) | 2020.06.25 |
CodeEngn(코드엔진) basic 07 (0) | 2020.06.25 |