ABOUT ME

-

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

     

    소스코드가 좀 많이 길어졌습니다.

     

    DO -> GYE -> GUL -> YUT ->MO 순으로 함수를 호출해서 system(cmd) 를 이용하는 문제입니다.

    argv[1]에는 libc를 사용할 수 없고, RET 에는 DO 함수의 주소가 들어가야 합니다.

     

    일단 RET를 DO함수 주소로 맞춰주면 아래와 같이 페이로드를 작성하면 됩니다.

     

    [Dummy 44 byte] + [DO 함수 주소 (프로그램 RET)] + [GYE 함수 주소 (DO 함수 RET)] + [GUL 함수 주소 (GYE 함수 RET)] + [YUT 함수 주소 (GUL 함수 RET)] + [MO 함수 주소 (YUT 함수 RET)] 의 형식으로 넣어야 할것 같습니다.

     

    각 함수의 주소를 objdump를 이용해서 알아보겠습니다.

    DO : 0x080487ec

    GYE : 0x080487bc

    GUL : 0x0804878c

    YUT : 0x0804875c

    MO : 0x08048724

     

    위의 주소들을 전부 넣어보면 아래와 같이 출력을 해줍니다.

     

    sh 라는 값에 이상한 값이 들어있습니다.

    아마 MO 주소 뒤에 들어있는 임의의 값이 command로 들어가게 된것으로 보입니다.

     

    command는 ebp+8에서 값을 가져옵니다.

     

    ebp+8에서 받아오지만 라이브러리를 가져올수없기 때문에 ebp+12에 "/bin/sh"를 넣고 가져오면 될것 같습니다.

     

    [Dummy 4 byte] + [EBP+12의 주소] + ["/bin/sh"] 로 넣으면 됩니다.

     

     

    B에다가 "/bin/sh" 주소를 넣으면 됩니다.

     

    B자리에 0xbffffa68을 넣으면 될것 같습니다.

     

    login : succubus

    password : here to stay

    '$ 시스템 해킹 $ > Los Of BufferOverflow' 카테고리의 다른 글

    Level19 (nightmare -> xavius)  (0) 2020.01.01
    Level18 (succubus -> nightmare)  (0) 2020.01.01
    Level16 (assassin -> zombie_assassin)  (0) 2020.01.01
    Level15 (giant -> assassin)  (0) 2020.01.01
    Level14 (bugbear -> giant)  (0) 2020.01.01

    댓글

Designed by Tistory.