Ret2plt
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
이 기술의 목표는 ASLR을 우회하기 위해 PLT의 함수에서 주소를 누출하는 것입니다. 예를 들어, libc의 puts
함수 주소를 누출하면, libc
의 기본 주소를 계산하고 다른 함수에 접근하기 위한 오프셋을 계산할 수 있습니다.
이는 pwntools
페이로드를 사용하여 수행할 수 있습니다 (여기에서):
puts
(PLT의 주소를 사용하여)가 GOT(전역 오프셋 테이블)에 위치한 puts
의 주소로 호출되는 방식을 주목하십시오. 이는 puts
가 puts
의 GOT 항목을 출력할 때, 이 항목이 메모리에서 puts
의 정확한 주소를 포함하게 되기 때문입니다.
또한 main
의 주소가 익스플로잇에 사용되어 puts
가 실행을 마치면 바이너리가 종료되는 대신 main
을 다시 호출합니다(따라서 누출된 주소는 계속 유효합니다).
이것이 작동하기 위해서는 **바이너리가 PIE로 컴파일될 수 없거나, PLT, GOT 및 main의 주소를 알기 위해 누출을 찾아야 합니다. 그렇지 않으면 먼저 PIE를 우회해야 합니다.
이 우회에 대한 전체 예제를 여기에서 찾을 수 있습니다. 이것은 그 예제의 최종 익스플로잇이었습니다:
다른 예제 및 참고자료
64비트, ASLR 활성화, PIE 없음, 첫 번째 단계는 canary의 0x00 바이트까지 오버플로우를 채운 다음 puts를 호출하여 leak하는 것입니다. canary를 사용하여 ROP 가젯을 생성하여 GOT에서 puts의 주소를 leak하기 위해 puts를 호출하고, 그 다음
system('/bin/sh')
를 호출하는 ROP 가젯을 생성합니다.64비트, ASLR 활성화, canary 없음, 자식 함수에서 main의 스택 오버플로우. GOT에서 puts의 주소를 leak하기 위해 puts를 호출하는 ROP 가젯을 호출한 다음 one gadget을 호출합니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Last updated