ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GOT Overwrite
    Hack/Pwnable 2015. 6. 4. 23:58

    GOT Overwrite는 간단히 말하자면


    printf("/bin/sh");가 있다면 printf를 system으로바꿔 술을 실행시키는 기법이다.


    필요한것은 3개이다.


    .plt주소, printf@got 주소, system주소 


    간단하게 코드를 짜자.





    이 프로그램을 gcc로 컴파일해주자.


    gcc -o filename filename.c -z execstack -fno-stack-protector -m32


    32비트로, nx bit와 카나리를 없애주는 옵션이다.


    got overwrite를 해보자.


    우선 readelf로 plt주소를 구해보자.





    plt주소는 080482e0이다.


    printf의 got주소를 찾자






    disas main을한후, printf@plt를 call하는 부분을찾자 80482f0을 call하는데 해당함수안으로 들어가면 jmp *주소 가나오게된다. 주소가 got 주소이다.


    0x804a00c


    이제 system의 주소만 구하면된다





    0xf7e65cd0 system의주소이다.


    이제 set명령을통해 printf@got를 system으로 덮어주자.





    set got주소=system로, got주소를 system으로 바꾼다.


    그럼 최종적으로 printf가 system이되어 system("/bin/sh");가 된다.


    성공적으로 /bin/sh 쉘이 따지는것을 확인할수있다.

    'Hack > Pwnable' 카테고리의 다른 글

    Win32 attack  (0) 2015.06.08
    PLT OverWrite는 될까?  (0) 2015.06.06
    Bad ELF Interpreter Error  (0) 2015.05.11
    [Pwnable.kr]Echo  (0) 2015.03.24
    [Pwnable.kr]mistake  (0) 2015.03.16

    댓글

Designed by Tistory.