워게임/CodeEngn

[CodeEngn] Basic RCE L09

name2965 2022. 5. 19. 22:12
728x90

 

 

 

 

주어진 프로그램의 StolenByte를 구하는 문제입니다.

 

 

 

 

StolenByte란 원래 프로그램의 코드 윗부분의 위치를 upx1로 이동시켜서 upx0이 덤프되지 않는 코드를 말합니다.

 

원래 OEP를 찾아서 OEP 위에 계속해서 푸쉬된 NOP이 바로 StolenByte라고 할수 있습니다.

 

StolenByte를 찾아보겠습니다.

 

 

 

우선 OEP를 찾아야하기 때문에, 저번처럼 pushad로 스택에 푸쉬된 주소를 하드웨어 중단점을 걸고

실행시키면 popad가 나옵니다.

 

 

 

 

popad와 jmp 사이에 push된 스택이 3개 보입니다. 바로 이 부분이 StolenByte라는 것입니다.

 

jmp 에 있는 주소로 넘어가보면

 

 

 

 

다음과 같이 프로그램의 원래 OEP가 나옵니다.

 

그런에 OEP위에 여러개의 NOP이 있습니다. 그리고 MessageBoxA함수 전에 push된 인자가 1개밖에 없는데

 

 

 

 

공식 docs를 찾아보면 이 함수는 인자가 4개가 필요합니다. 그러므로 아까전에 보였던

 

popad와 jmp 사이에서 push된 데이터가 바로 StolenByte입니다.

 

 

 

 

StolenByte = 6A0068002040006812204000

 

 

 

 

728x90

'워게임 > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L11  (0) 2022.07.03
[CodeEngn] Basic RCE L10  (0) 2022.07.02
[CodeEngn] Basic RCE L08  (0) 2022.05.19
[CodeEngn] Basic RCE L07  (0) 2022.05.12
[CodeEngn] Basic RCE L06  (0) 2022.05.12