티스토리 뷰

level09의 힌트를 보시면 stolenByte를 구하라고 나옵니다. 낯선 단어이기에 설명하고 들어가겠습니다.


----------------------------------------------------------------------

Stolenbyte

-> Stolenbyte는 패커가 위치를 이동시킨 코드로써 보호된 프로그램의 코드의 윗부분(보통은 엔트리 포인트의 몇 개의 명령어)입니다. 이 부분의 명령어는 이동된 곳 이나 할당 받은 메모리 공간에서 실행됩니다. 보호된 프로세스의 메모리가 덤프되었을 때 Stolenbyte를 복구하지 못한다면 덤프된 실행파일은 작동하지 않을 수 있습니다.

----------------------------------------------------------------------




ExeinfoPE를 보시면 UPX로 패킹이 되어 있습니다.


아래의 그림을 보면 00407387 부분에서 JMP를 하여 OEP로 들어갑니다.


이제 stolenbyte를 찾아 봅시다. 아래 그림을 자세히 보면 POPAD 아래 Stack으로 PUSH를 하는 3줄의 코드가 보입니다. 그리고 PUSH한 상태 그대로 OEP로 이동하는 모습을 볼 수 있습니다. 즉, 원래 코드가 실행될 때 Stack에 올라가 같이 실행되는 저 3줄이 바로 StolenByte 입니다.


위의 stolenbyte값을 OEP의 위에 NOP값에다가 붙여야 합니다.


붙여놨더니 정상적으로 메시지박스가 동작을 합니다. 메시지 박스에 인자값을 줘야 하는데 인자값들은 OEP에 없고 JMP를 하기 전에 코드가 있어서 정상적인 코드가 아니였습니다. 이런식으로 붙여놓고 덤프를 떠주면 정상적으로 작동을 합니다.




'Wargame > codeengn' 카테고리의 다른 글

[codeEngn] Basic RCE level11  (0) 2015.07.29
[codeEngn] Basic RCE level10  (0) 2015.07.29
[codeEngn] Basic RCE level08  (0) 2015.07.28
[codeEngn] Basic RCE level07  (0) 2015.07.28
[codeEngn] Basic RCE level06  (0) 2015.07.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함