ii4gsp

GOT Overwrite 기법 본문

시스템 해킹/Technique

GOT Overwrite 기법

ii4gsp 2020. 1. 22. 18:23

GOT Overwrite

GOT Overwrite는 Dynamic Link방식으로 컴파일된 바이너리가 공유 라이브러리를 호출할 때 사용되는 PLT & GOT를 이용하는 공격 기법이다.

PTL는 GOT를 참조하고, GOT에는 함수의 실제 주소가 들어있는데, 이 GOT의 값을 원하는 함수의 실제 주소로 변조시킨다면, 원래의 함수가 아닌 변조한 함수가 호출된다. ex) printf("/bin/sh");  "/bin/sh"라는 문자열을 출력하는 함수가있으면 printf함수를 system함수로 변조하여 system("/bin/sh"); 가 되어 쉘을 실행시킨다.

 

 

 

 

예제

#include <stdio.h>

int main()
{
    printf("/bin/sh");
}

예제 소스코드이다.

 

 

 

 

<main+25>부분을 보면 printf함수의 PLT주소가 보인다.

printf함수의 PLT주소는 0x80482e0이다.

 

 

 

 

PLT주소를 디스어셈블해보면 GOT주소 0x804a00c가 보인다.

system()함수의 주소를 구해 GOT를 system()함수의 주소로 바꾸면 쉘을 획득할 수 있다.

 

 

 

 

print system를 입력하면 system()함수의 주소를 볼 수 있다.

system()함수의 주소는 0xf7e15200이다.

 

 

 

 

GOT주소 *0x804a00c를 system()함수의 주소 0xf7e15200로 바꿔주니 printf("/bin/sh");를 system("/bin/sh");로 변조되어

쉘이 실행 되었다.

'시스템 해킹 > Technique' 카테고리의 다른 글

DLL Injection  (0) 2020.04.16
Find kernel32.dll Address  (0) 2020.04.08
RTL (Return-to-libc) 기법  (2) 2020.01.22
FPO (Frame Pointer Overflow) 기법  (0) 2020.01.21
[Heap] Double Free Bug  (0) 2020.01.20
Comments