Jaeseo's Information Security Story

Codeengn Basic RCE 9번 문제 본문

Write UP/Codeengn - basic

Codeengn Basic RCE 9번 문제

Jaeseokim 2019. 11. 30. 21:35

09.exe - StolenByte를 구하시오 Ex) 75156A0068352040

일단 PE 분석을 해본다.

그 결과 UPXPacking 되어 있는 것을 볼 수 있다. UPX UnPacking 한다.

이제 프로그램을 실행하여 분석을 한다.

Upx Unpacking를 하고 나니 문자열이 다 깨지고 오류 메세지를 출력하고 있다.

Upx에서 StolenByte를 일부 가지고 있어서 오류가 나는 것으로 예상이 된다.

그래서 이번에는 upx Unpacking을 진행하지 않고 디버깅을 진행하도록 한다.

일단 x32dbg로 분석을 한다. 실행을 해보면 처음 upxunpacking을 진행하는 모습을 볼 수 있다.

Upx unpacking을 하면서 계속 반복을 하는 모습을 볼 수 있는데 F8Break Point 그리고 F9를 활용하여 반복문에 걸리면 빠져나오도록 하여 분석을 진행한다.

진행을 계속 하다 보면 jmp을 통해 ep로 이동하는 모습을 볼 수 있다. 이제 여기에 Break Point를 걸고 분석을 시작한다.

이때 앞에 정상적으로 작동을 하였다면 보이는 메시지가 보인다.

StolenByte로 추정이 된다 앞에 BreakPoint를 걸고 분석을 해본다.

Popad을 통해 oep에서 작동할 레지스터를 복구를 한 다음 StolenByte로 추정이 되는 명령들을 실행한다.

이때 push로 스택에 미리 명령어를 삽입 후 반복적으로 0을 집어넣어 espeax를 같은 값으로 바꾸고 JMP를 하는 것을 볼 수 있다.

이제 실제로 이 코드를 UnPacking 된 파일에 집어넣어서 확인을 해본다.

NOP으로 채워져 있던 공간과 정확하게 일치를 하는 것을 볼 수가 있다. 실제로 실행을 시켜서 정상적인지 확인해본다.

 위와 같은 모습으로 정상적으로 작동하는 모습을 볼 수 있다.

정답: 6A0068002040006812204000`

'Write UP > Codeengn - basic' 카테고리의 다른 글

Codeengn Basic RCE 11번 문제  (0) 2019.11.30
Codeengn Basic RCE 10번 문제  (0) 2019.11.30
Codeengn Basic RCE 8번 문제  (0) 2019.11.30
Codeengn Basic RCE 7번 문제  (0) 2019.11.16
Codeengn Basic RCE 6번 문제  (0) 2019.11.15
Comments