감자 텃밭

[시스템] GOT Overwrite 본문

System/System Hacking Techniques

[시스템] GOT Overwrite

g2h 2021. 11. 22. 18:42

GOT Overwrite란 기법은 PLT, GOT의 GOT를 조작하여 사용하는 기법이다.

https://hg2lee.tistory.com/61

 

[시스템] PLT 와 GOT [초급]

시스템 해킹(포너블)을 하다보면 PLT, GOT 어디선가 들어봤고, plt, got 라고 불리우는것들을 막 호출하고 변조하고 할겁니다. 이번에는 이러한 plt와 got가 뭔지에 대해 알아보도록 하겠습니다. 보통

hg2lee.tistory.com

해당 기법은 PLT와 GOT는 Dynamic Link 방식에서 공유라이브러리를 사용하는 과정을 이해한다면 

쉽게 이해 할 수 있을것이다.

 


함수가 호출되면 plt를 참조하고 plt는 got를 참조하는대 got에는 함수의 실제 주소가 들어가있다고 했다.

그럼 여기서 plt가 참조하는 got영역에 공격자가 원하는 함수를 악의적으로 저장했다고 가정해보자.

 

위 사진과 같이 plt는 -> got는 -> 실제함수를 가르키고있다 위 상황을 악의적인 상황으로 바꿔보면.


 

위와 같은 모양이 된다

plt 가 참조하는 got영역의 주소가 본래의 실제함수 주소가 아닌 악의적으로 저장해놓은 함수를 참조하는 것이다.

 

즉 사용자가 read() 함수를 실행시키지만, 내부적으로 system() 함수가 실행되는 효과를 가져온다.

ex read("/bin/sh") -> system("bin/sh")

 

해당 기법은 여러 기법에서 응용되는 기법이며, ROP, FSB, RTL-Chaining등 수많은 기법에서 응용된다.

 

 

※ 내용이 이상하거나 문제가 있을경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.