줴림이 공부하줴림
[CodeEngine] Basic RCE L11 본문
어느 새 10번을 지나 11번 문제를 풀고 있는 나. 이번 문제는 OEP랑 StolenByte를 찾는 문제이다. Stolen Byte는 저번 문제를 풀 때도 나왔었는데, 패커의 일부분처럼 동작하기 위해 패커 코드 내에 사용된 코드를 의미한다는 걸 다시 한 번 알고 가자. 그리고 POPAD와 JMP OEP 사이에서 PUSH 명령어를 통해 원래 OEP부터 실행되었어야 할 코드를 스택으로 빼돌리는 것도!
11.exe를 실행시키면 이런 창이 나오는데, 그대로 확인을 누르면 keyfile을 찾을 수 없다고 error가 뜬다. 얘도 패킹이 되어 있는지 HxD랑 PEiD를 통해 알아보도록 하자. HxD 쓰는 이유? 있어보이려고...
보니까 UPX로 패킹이 되어 있긴 하다. 바로 패킹을 풀어주고 Olly로 열어보자!
지금 찾아야 할 게, 일단 OEP였지? 여기서 알 수 있는건 OEP는 00401000라는 것이다. 그리고 0040100C에서 Push를 통해 스택을 밀어넣어주고 있다.
그럼 이제 다시 패킹된 파일을 열어서 stolen byte를 찾아보자. Search → Command를 열어서 POPAD를 검색하면 딱 한 개의 검색 결과가 나온다.
POPAD랑 JMP OEP 사이에서 PUSH로 코드를 빼돌리는 부분이 Stolen Byte다. 그럼 Stolen Byte는 6A0068002040006812204000일 것이다.
근데 정답인증은 OEP+Stolen Byte로 하라고 했으니, 코드엔진 사이트에 004010006A0068002040006812204000를 넣어보면 될 것이다. 왤케 길어
'Study > CodeEngine' 카테고리의 다른 글
[CodeEngine] Basic RCE L10 (0) | 2025.04.23 |
---|---|
[CodeEngine] Basic RCE L09 (0) | 2025.04.22 |
[CodeEngine] Basic RCE L08 (0) | 2025.04.21 |
[CodeEngine] Basic RCE L07 (0) | 2025.04.18 |
[CodeEngine] Basic RCE L06 (0) | 2025.04.17 |