일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스캔
- 시스템 해킹
- SQL Injection
- load of sqlinjection
- 권한상승
- sql
- 해킹
- 스캐닝
- 해킹툴
- SQLINJECTION
- 메타스플로잇
- CTF
- 취약점분석
- Los
- smb
- 취약점 스캔
- 해킹도구
- Hacking
- 암호해독
- 침투테스트
- Samba
- 포트스캔
- 모의해킹
- web hacking
- Metasploit
- root권한
- 취약점
- 칼리리눅스
- Kioptrix
- 내부침투
- Today
- Total
감자 텃밭
[시스템] RTL-Chaining 본문
RTL-Chining는 RTL기법을 연속해서 사용하는 방식의 기법이다.
본래 RTL 기법에서 함수호출과 파라미터로받아오는 부분 사이에
4바이트 만큼의 더미값을 줬다. 그부분은 해당 호출하는 함수가 종료되고 돌아가
RET 주소라고 설명했다. 이 부분을 이용해서 연속적으로 함수들을 호출하여 프로그램을 제어할 수 있다.
RTL기법을 선행학습 하지 않았다면 먼저 보고 오도록 하자.
[시스템] Return-to-Libc (RTL)
해당 기법은 프로그램이 정상적으로 종료되면 돌아갈 주소를 담고있는 RET영역에 메모리에 적재되어 있는 공유 라이브러리 함수의 주소로 변경하여, 해당 함수를 호출하는 방식의 기법이다. 해
hg2lee.tistory.com
RTL-Chaining 는 pop ret; 와 같은 가젯을 사용하여 이전 함수에서 사용한 인자(파라미터)들을 정리 후
ret부분에서 다시 특정 함수를 호출한다.
여기서 pop의 개수는 이전 함수에서 사용된 파라미터의 개수만큼 사용하여야 한다.
일반적인 RTL 기법은 위와 같이 사용된다. RET영역에 공유라이브러리에서 불러온 System() 함수를 넣고 4바이트 다음에
함수에서 사용할 파라미터(인자)를 저장한다 4바이트 부분에는 프로그램 실행에 아무런 영향을 끼치지 않는 더미값을 넣게된다.
해당 더미값 부분에 가젯을 사용하여 연속적으로 함수를 호출하면 RTL-Chaining기법이 완성된다.
위 사진처럼 필요한 함수와 가젯만 존재한다면 체인쳐럼 연결되어 계속해서 원하는 함수를 호출 할 수 있다.
물론 RTL-Chaining 에서도 64bit 환경에서는 레지스터에 먼저 파라미터를 넣고 출력하는 방식을 사용해야 한다.
※ 내용이 이상하거나 문제가 있을경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.
'System > System Hacking Techniques' 카테고리의 다른 글
[시스템] Return-Oriented-Programming - ROP [x86-32bit] (0) | 2021.11.22 |
---|---|
[시스템] GOT Overwrite (2) | 2021.11.22 |
[시스템] Return-to-Libc (RTL) (0) | 2021.11.20 |
[시스템] Return-to-Shellcode (0) | 2021.11.20 |
[시스템] NOP sled 기법 (0) | 2021.11.20 |