Basic RCE L09

2021. 10. 26. 06:03Security/코드엔진

Q. StolenByte를 구하시오 Ex) 75156A0068352040

 

1. 실행

left: exe 실행 시 처음 나오는 화면 / right: 확인 누르면 나오는 두 번째 화면

2. x32dbg 실행

- ... 이젠 식상하다. "pushad"? "그것" ㄱ

명령어 끝에 k가 있다. 주의!

? 언패킹 후 실행 화면 글자가 깨지는데 일단 무시하고 진행한다. 

오.. 색다른 패턴이다. EntryPoint가 nop이다. 

 

여기서 다시 보는 문제. "StolenByte"라고 했는데, 여기서 Stolen은 Steal의 과거분사로써 "훔친"이란 뜻을 가지기 때문에 처음 Entry point에서 봤던 nop의 정체는 byte가 도난당해 nop이 된 byte 망령들이었다. 

 

-> StolenByte: 프로그램의 일정 부분 코드를 훔쳐서 다른 부분으로 옮긴 코드

 

f8로 다시 삽질을 해보았지만, 현재 코드에서는 답을 못찾아서 패킹된 이전 exe파일에 들어가서 확인했다. 

흠.. pushad부터 시작한다. 이 시점에서 내가 다른 곳에서 얻은 정보를 적용했는데, 그 정보는 이렇다.

 - StolenByte는 패커가 이동시킨 코드의 윗부분인데, upx에서는 마지막 jmp 전 popad 이후 일정 바이트 코드를 의미한다.

이를 토대로 쭉~쭉~ 내려가 봤는데, 아래와 같이 popad를 발견할 수 있었다. 바로 이 밑의 3줄이 숨겨진 StolenByte이다.

 

정답은 OPcode를 이어 붙이면 끝. -> 6A0068002040006812204000

'Security > 코드엔진' 카테고리의 다른 글

Basic RCE L10  (1) 2021.10.26
Basic RCE L08  (0) 2021.10.26
Basic RCE L07  (0) 2021.10.26
Basic RCE L06  (0) 2021.10.26
Basic RCE L05  (1) 2021.10.26