ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FTZ 19번 Write-up
    표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 6. 14:51

    혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다.


    FTZ 19번이다.

    아주 심플한 코드가 보인다.

    이전 문제들처럼 아주 쉽게 풀리겠다고 생각했다.

    19번인데 갑자기 난이도가 떨어진줄 알았다.





    ret까지 44개다.

    일단은 eggshell을 이용해서 ret를 덮어보았으나..






    오잉?? 분명히 제대로 실행된거같은데 권한이 올라가지 않았다...

    음 아마도 권한상승기능이 없는 것 같다.

    다른 블로그들의 글을 찾아보니 일정 버전 이후, 보안상의 이유로

    그냥 쉘을 실행하면 권한상승기능이 제거되었다고 한다. 

    참고 : https://py0zz1.tistory.com/30






    그래서 생각해보니 권한을 상승시키는 함수와

    "/bin/sh", 그리고 이 "/bin/sh"을 실행시켜줄

    system() 함수를 이용하여 RTL Chaninig을 해야할 것 같았다.

    그렇기 때문에 gadget도 필요했다.

    하나씩 차근차근 찾아보도록 하자!






    그래서 우리는 이전 문제들에서 많이 봐왔던

    setreuid()함수를 이용해서 권한을 상승시켜야한다!!

    그렇다면 setreuid() 함수부터 찾아보자!!






    그 다음은 gadget을 구해보자.

    setreuid() 함수의 인자는 두개다.

    그렇다면 pop pop ret (ppr)을 구해야한다!!


    objdump -d 바이너리명 | egrep 'pop | ret'

    ppr은 이렇게 구해주고~ 0x0804849d






    다음으로 필요한 것은 system()함수의 주소!!

    구해주고~





    다음으로는 system() 함수가 실행시킬 "/bin/sh"을 찾아보자~

    4개 뒤니까 0x42127ea4가 되겠다!!





    우리가 필요한 것은 이제 다 구했다. 

    이제 RTL Chaning을 이용해서 공격을 진행해보자~

    gadget을 활용하여 공격을 진행하면된다.

    여기서 main의 ret를 보면 

    취약점이 일어나는 버퍼의 위치가 main이기 때문이다.

    기준은 취약점이 이러나는 버퍼의 위치이기 때문에

    공격할 시, 주의해야한다!!





    a*44 + setreuid() + gadget(ppr) + 인자 3100(level20) + 인자 3100(level20) + system() + dummy(ret의 ret) + "/bin/sh"




    system()과 "/bin/sh" 을 굳이 구하지 않고

     eggshell을 이용해서 풀어도 된다.

    egg = 0xbffff2a8

    system 함수호출 대신에 eggshell로 나온 주소로 "/bin/sh"을 실행시키는 것이다.





    다음단계로~










    반응형

    '표튜터와 함께하는 Pwnable > FTZ Write-up (11~20)' 카테고리의 다른 글

    FTZ 18번 Write-up  (0) 2019.02.06
    FTZ 17번 Write-up  (0) 2019.02.05
    FTZ 16번 Write-up  (0) 2019.02.05
    FTZ 15번 Write-up  (0) 2019.02.05
    FTZ 14번 Write-up  (0) 2019.02.05

    댓글

Designed by Tistory.