ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Level18 (succubus -> nightmare)
    $ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:44

     

     

    이번 문제의 키워드는 PLT입니다.

     

    코드를 보면 RET에 strcpy의 주소를 넣어야 하는 것으로 보이네요!

    하지만 memset으로 RET이후에 오는 4byte 까지 A로 초기화를 하게 됩니다.

     

    strcpy의 PLT를 이용하는 문제 인것 같지만 간단하게 strcpy을 이용한 간단한 문제 풀이로도 풀이가 됩니다.

     

    strcpy의 기본 형식은 아래와 같습니다.

     

    해당 문제는 아래의 페이로드로 문제를 해결해 보려고 합니다.

    [system 주소] + [Dummy 4 byte] + ["/bin/sh 주소"] + [Dummy 32 byte] + [strcpy 주소 (실행 파일 RET)] + [Dummy 4 byte] + [ebp+8주소 (strcpy Dest)] + [buf 주소 (strcpy Source)]

     

    위의 페이로드를 입력을 하게되면 strcpy가 끝나면 아래와 같은 모양으로 변경이 됩니다.

    [system 주소] + [Dummy 4 byte] + ["/bin/sh 주소"] + [Dummy 32 byte] + [strcpy 주소 (실행 파일 RET)] + [system 주소] + [Dummy 4 byte] + ["/bin/sh 주소"]

     

    이제 필요한 주소를 모아 보겠습니다.

    system 주소 : 0x40018000+0x40ae0 = 0x40058ae0

    "/bin/sh" 주소 : 0x40018000 + 0xe3ff9 = 0x400fbff9

     

    strcpy의 주소는 아래와 같습니다.

     

    strcpy 주소 : 0x08048410

     

    buf시작 주소를 알아보겠습니다.

     

    core analysis 를 해보면 아래와 같습니다.

     

    buf 시작 주소 : 0xbffffa70 입니다.

    ebp+8의 주소는 시작주소로 부터 0x30 떨어져 있기때문에 0xbffffaa0 입니다.

     

    exploit을 해보겠습니다.

     

    login : nightmare

    password : beg for me

    댓글

Designed by Tistory.