티스토리 뷰

포너블/포너블 공부

Return To Libc 기법

삼전동해커 2018. 7. 31. 12:01

RTL(Return To Libc)란 무엇 일까?


1.개념

RTL기법은 리눅스의 메모리 보호 기법 중 하나인 NX bit(Non eXecutable bit)를 우회하기 위해 사용되는 공격 기법이다.


NX bit는 stack segment에서 execute(실행)권한을 제한함으로써,

stack에 쉘 코드를 저장하고 이를 실행하여 악용되는 방법을 막는 보호 기법이다.

(non-executable stack 보호 기법이라고도 한다.)


이 기법은 메모리에 미리 적재되어 있는 공유 라이브러리를 이용해 바이너리에 원하는 함수가 없어도

공유 라이브러리에서 원하는 함수를 가져와 사용할 수 있다.


2.이해하기

예를 보며 설명을 보자.system()함수를 실행해서 살펴보자.

system()함수는 단순히 명령어를 호출만 하는 함수로서 setuid가 걸려있는 취약점 프로그램일지라도 

root권한은 획득하지 못한다.


취약점이 있는 소스코드를 보자.

 

strcpy에서 버퍼오버플로우 취약점이 있는 소스코드 이다.

RTL을 사용하기 위해서 원하는 libc 함수의 주소와 함수의 인자를 알아야 한다.

먼저 위에서 말한 system()함수에 대해 찾아보자.




system()함수의 주소를 알아냈다.

0xf7e52e70



이번엔 system()함수의 인자들에 대해 알아보자.

그러기 위해 system.c를 -static으로 컴파일하여 운영체제와 libc의 버전에 따라 

호출형태나 링크 형태가 달라지지 않게 해주자.




'포너블 > 포너블 공부' 카테고리의 다른 글

PLT(Procedure Linkage Table),GOT(Global Offset Table)  (0) 2020.09.15
execve() 함수  (0) 2020.09.08
레이스 컨디션 해킹  (0) 2018.06.27
심볼릭 링크 해킹  (0) 2018.06.27
스택(달고나 정리편)-1  (0) 2018.06.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함