Basic RCE L09

hoon·2023년 5월 27일
0

CodeEngn

목록 보기
9/21

문제

StolenByte를 구하시오 Ex) 75156A0068352040

실행화면

키파일을 찾고 해당 파일없어 종료되는 모습이다.

packing 확인

UPX 섹션이 확인되어 unpacking 후 분석을 진행하겠다.

unpacking을 한 dump 파일을 만드니 처음 문자열이 깨져서 나온다. 아마 해당 문자열이 OEP로 jmp하기 전에 불려지는 것 때문으로 예상된다.


StolenByte를 찾아보니 패킹된 프로그램에서 코드의 일부를 OEP로 점프하기 이전에 숨기는 것을 의미한다고 한다. 여기서는 push 명령어들이 StolenByte이기에 해당 명령어를 옮겨주면 된다.
그 바이트를 unpack이 된 이후로 옮겨주어야 한다고 한다.
원래 NOP이었던 부분을 다음과 같이 패치해주었다.

패치 전

패치 후


그 후 OEP를 401000으로 바꿔준 다음에 dump를 떠주도록 하겠다.

정상적으로 문자열이 나오는 것을 확인할 수 있었다.

IDA 분석

ALT+K를 통해 sp를 수정해주어야 다음과 같이 제대로 decompile되는 것을 확인할 수 있다.

FileName = abex.l2c 이어야되고 해당 파일 크기가 18이어야된다.
문자열 길이가 18인 123456789123456789를 쓴 abex.l2c를 만들고 파일을 실행시키니 다음과 같이 성공 메시지를 확인할 수 있었다.

StolenByte : 6A0068002040006812204000

0개의 댓글