-
GOT OverwriteHack/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