ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LEVEL 16 zombie_assassin write-up
    System hacking training/Hackerschool LOB 2018. 5. 13. 17:09

    assassin -> zombie_assassin

    소스코드를 분석해보면 힌트부분에 FEBP라는 중요한 힌트가 있다.

    Fake EBP라는 기법을 이용하면 풀릴것같다.

    인자는 2개 이상이여야하고, argv[1][47]이 이전 문제와 동일하게 \xbf, \x40이면 예외처리가 된다. 그리고 strncpy()로 buffer에 argv[1]의 값을 48개 받기 때문에 bof가 터진다.

    이 문제의 의도에 맞게 Fake ebp 기법을 이용하여 문제를 풀면된다.

    Fake ebp에 대해서는 자세하게 따로 다루기로 하고 페이로드를 짜는 요령만 먼저 익혀보자.

    사실 Fake ebp 는 FPO와 매우 유사하기 때문에 풀이가 쉬웠다.

    먼저 페이로드의 구성은 다음과 같다.

    `python -c 'print "dummy(4byte)"+"쉘코드 주소"+"dummy(32byte)"+"buffer-4주소"+"leave-ret 가젯"'`

    여기서 쉘코드를 넣을 공간은 buffer, 환경변수 등 다양해 보이지만 이 풀이에서는 환경변수에 쉘코드를 넣는 방법으로 풀이하였다.

    먼저 환경변수에 쉘코드를 넣어주고

    환경변수의 주소를 구하는 프로그램을 만들어줬다.

    그렇게해서 구한 환경변수의 주소는 다음과 같다.

    이제 아래와 같이 leave-ret가젯을 구하고

    구한 가젯의 주소는 0x8048534이다.

    마지막으로 버퍼의 주소를 구하기 위해 core를 분석하면 되는데

    코어 파일을 생성하고

    buffer의 시작 주소를 얻을 수 있었다.

    이제 페이로드를 작성하여 익스하면 된다.

    이상 풀이를 마친다.

     

    반응형

    'System hacking training > Hackerschool LOB' 카테고리의 다른 글

    LEVEL 18 nightmare write-up  (0) 2018.06.27
    LEVEL 17 succubus write-up  (1) 2018.05.17
    LEVEL 15 assassin write-up  (0) 2018.05.13
    LEVEL 14 giant write-up  (0) 2018.05.12
    LEVEL 13 bugbear write-up  (0) 2018.04.26
Designed by Tistory.