ABOUT ME

-

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

     

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

     

    stack영역 사용 불가능, binary 영역 사용 불가능

    leave 와 ret로 끝나는 libc 함수도 사용 불가능 합니다.

    stack도 RET를 제외하고 모두 초기화를 시킵니다.

     

    또한 취약한함수로 fgets 를 사용하고 stdin 을 사용합니다.

    \xbf , \x08 로 시작하는 값은 이용할 수 없기 때문에 stdin 영역이 사용하는 주소가 \xbf, \x08이 아니라면 쉽게 해결할 수 있을 것 같습니다.

     

    먼저 stdin 부분에 break를 걸어서 stdin 중에서 어디에 데이터가 들어가는지 알려가보겠습다.

     

    3번째 push 된 값인 ds:0x08049a3c가 stdin 이라는 것을 알 수 있습니다.

     

    fgets 전과 후를 break 해서 비교해 보도록하겠습니다.

     

    먼저 fgets 를 call 하는 부분인 0x8048729 에 break 를 해서 $esp 를 확인해 보면 잘들어가 있는것을 볼수 있습니다.

     

    stdin 인 0x8049a3c를 확인해 보면 0x401068c0 이 있는 것을 알수 있고, 해당 주소를 한번 확인해 보겠습니다.

     

    위와 같이 들어있는 것을 확인할 수 있습니다.

     

    fgets 를 한뒤에는 어떻게 변할지 확인해 보겠습니다.

     

    0x40015000 ~ 0x4001500a 에 넣어준 값이 들어가 있다고 한다.

     

    해당 값을 이용해서 exploit을 하면 될것 같습니다.

    [Dummy 19 byte] + [shellcode 25 byte] + [stdin 주소 (실행파일 RET)]

     

     

    login : xavius

    password : throw me away

    댓글

Designed by Tistory.