ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lvl 11
    Wargame/CodeEngn Basic RCE 2018. 12. 27. 12:34

    문제



    OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 

    정답인증은 OEP+ Stolenbyte 

     Ex ) 00401000FF35CA204000E84D000000 





    풀이


    → 프로그램을 실행한다. 








    → 키 파일 체크 확인 메시지와 해당 파일을 찾을 수 없는 메시지를 확인된다. 디스어셈블을 통해 확인 결과, UPX로 패킹되어 있다.



    → 언패킹한 바이너리를 다시 디스어셈블한 결과, 앞선 문제와 같이 메시지 박스 함수 호출에 필요한 인자 값이 정상적으로 스택에 쌓이지 않는 것을 확인할 수 있다.





    → 해당 부분이 문제에서 말하는 StolenBytes 인 것으로 추측되며, StolenBytes를 찾기 위해 패킹된 바이너리를 디버깅해야 한다. UPX이므로, 언팩 종료 분기위에 POPAD에 BP를 설정하고 디버깅한다.





    → 어렵지 않게, 메시지 박스 함수에 필요한 인자를 발견할 수 있다. 해당 코드가 StolenBytes 이다.




    →  언패킹된 후의 EP를 확인할 수 있다. (EP=0x0040100C)




    → StolenBytes의 hex 값은 아래와 같다.




    → 확인된 EP가 0x0040100C 이고, StolenBytes를 채울 값이 6a 00 68 00 20 40 00 68 12 20 40 00 이다. 따라서, 채울 값이 12바이트 이므로 12바이트를 위로 채우고 복구하면 정확한 OEP가 나온다. OEP는 0x0040100C-0xC(12) 이므로, 0x00401000 이다.



    → 이전에 비슷한 문제랑 풀이가 동일했다.



    'Wargame > CodeEngn Basic RCE' 카테고리의 다른 글

    lvl 13  (0) 2019.01.03
    lvl 12  (0) 2018.12.27
    lvl 10  (0) 2018.12.13
    lvl 09  (0) 2018.12.12
    lvl 08  (0) 2018.12.11

    댓글

Designed by Tistory.