1. 문제 파일 실행
문제 파일 실행 시 keyfile 확인을 위해 ok버튼을 누르라는 메세지 창 실행됨
확인 버튼 클릭 시 파일을 찾을 수 없다는 안내문이 나옴
2. 문제 파일 패킹 여부 확인
PEiD로 확인 결과 UPX로 패킹된 파일이다.
3. UPX 언패킹
upx.exe로 언패킹을 해 보았다. 성공적으로 언팩되었다.
그런데 언패킹 된 파일을 실행해보니 문자가 깨지면서 정상실행되지 않고 오류창이 뜨며 종료되었다.
단순히 언패킹툴로 언패킹하는 문제가 아닌 것이다. 여기서 사용되는 개념이 문제에 제시된 StolenByte이다.
4. StolenByte 찾기
StolenByte를 찾는 것은 어렵지 않다.
디버거로 패킹된 원본파일을 열고 살펴보면 POPAD 뒤에 어떤 값들이 연속으로 PUSH 되는것을 볼 수 있다.
이것이 StolenByte가 맞는지 정확하게 확인을 위해서는,
UPX로 언패킹되었지만 오류가 발생하는 프로그램에 StolenByte를 넣고 프로그램을 복구해보면 되는데
이 문제는 StolenByte만 찾으면 되므로 6A 00 68 00 204000 68 12204000가 FLAG이다.
FLAG : 6A0068002040006812204000
StolenByte 개념을 알면 풀 수 있는 문제였다.
'해킹 공부 > 리버싱' 카테고리의 다른 글
StolenByte란? (0) | 2022.11.26 |
---|---|
CodeEngn_Basic RCE L16 (CMP, 레지스터값, stack) (0) | 2022.11.24 |
CodeEngn_Basic RCE L15 (CMP, 레지스터값, hex dump) (0) | 2022.11.17 |
CodeEngn_Basic RCE L14 (strings, CMP, EAX/ESI값) (0) | 2022.11.15 |
CodeEngn_Basic RCE L13 (C# 디컴파일) (0) | 2022.11.10 |