티스토리 뷰
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
링크
TAG
- 논문 잘 쓰는법
- PCA
- one-to-many
- SOME/IP
- Python
- Ethernet
- CAN-FD
- 케라스
- 이상탐지
- AVB
- json2html
- SVM
- automotive ethernet
- 차량 네트워크
- 단순선형회귀
- AVTP
- HTML
- many-to-many
- many-to-one
- AE
- 차량용 이더넷
- automotive
- 크로스 엔트로피
- problem statement
- 딥러닝
- 머신러닝
- porks
- 회귀
- cuckoo
- 로지스틱회귀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함