시스템 해킹을 위한 RTL(Return to Library) 기법
oolongeya
·2021. 8. 29. 15:49
해당 기법은 Protostar - Stack.5 문제를 기반으로 작성했다.
기법을 실습하기 위해 관련 Protostar 이미지 파일이 필요하다.
해당 파일은 바이러스, 악성코드 파일이 아님을 밝힌다.
Protostar 워게임 문제들의 이미지 파일이다. 모든 문제를 포함하고 있다.
리눅스에서 저장한 뒤 압축을 풀고 사용하면 된다.
gdb stack5 실행 후 메인 함수 부분에 브레이크 포인트를 걸고 프로그램 실행한다.
이후 disas system 혹은 print system (p system) 으로 system 함수의 주소 확인할 수 있다.
* 메인함수에 브레이크 포인트 안 걸고 실행도 안하면 system 함수를 확인할 수 없으니 주의하자.
find '/bin/sh'
/bin/sh 또한 주소를 확인할 수 있다.
얻은 정보들로 공격 코드를 작성해준다.
p32으로 패킹 하는 이유는 프로그램이 32비트 기반이다.
file 파일명 으로 확인가능하다.
A * 76 패딩한 이유는 pattern create 100 으로 패턴을 만들어서
input에 넣어주고 프로그램을 실행한 뒤 pattern offset 으로 확인했을 때 stack의 제일 첫번째로 쓰이는 부분까지의 거리가 76바이트 떨어져있기 때문이다.
즉 A로 76바이트 패딩 + 스택의 첫번째 쓰이는 부분(sys 함수) + dummy(sys함수 호출이후 ret주소가 들어가야하는 곳) + /bin/sh주소(sys의 인자값) 으로 /bin/sh을 불러오는 것이다.
sys 함수 호출 이후 sys의 ret 값을 더미값을 채워놓고 다음 인자값을 불러 오는 것이다.
성공적으로 쉘을 얻을 수 있다.
하지만 이 문제는 32비트 기반의 문제 이미지 파일을 이용한 것이고,
64비트 리눅스 환경에서 컴파일한 파일의 경우 공격 페이로드가 달라진다.
아래의 게시글들은 64비트 환경에서의 페이로드 작성을 다루고 있다.
https://kkomii22.tistory.com/75
https://kkomii22.tistory.com/74
'시스템 해킹 (Pwnable) > Archive' 카테고리의 다른 글
ROP(Return Oriented Programming)를 이용한 시스템 해킹 (0) | 2021.09.12 |
---|---|
x86와 x64에서 RTL을 이용한 페이로드 작성 시 주의점 (0) | 2021.09.01 |
시스템 해킹을 위한 pwntools 명령어 (0) | 2021.08.24 |
최신 칼리 리눅스 pwn 설치, 오류 해결 (0) | 2021.08.24 |