hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aws2exec-.dtors-and-.fini_array.md

4 KiB

AWS2Exec - .dtors & .fini_array

htARTE (HackTricks AWS Red Team 전문가)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**!

HackTricks를 지원하는 다른 방법:

.dtors

{% hint style="danger" %} 현재는 .dtors 섹션을 포함한 이진 파일을 찾기가 매우 이상합니다. {% endhint %}

소멸자는 프로그램이 종료되기 전에 실행되는 함수입니다 (main 함수가 반환된 후).
이러한 함수들의 주소는 이진 파일의 .dtors 섹션에 저장되어 있으며, 따라서 **__DTOR_END__**에 쉘코드 주소를 쓰면 프로그램이 종료되기 전에 실행됩니다.

다음 명령을 사용하여 이 섹션의 주소를 가져옵니다:

objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”

일반적으로 DTOR 마커는 ffffffff00000000 값 사이에 있습니다. 따라서 이 값만 보인다면 등록된 함수가 없다는 것을 의미합니다. 그래서 **00000000**을 쉘코드의 주소덮어쓰세요.

{% hint style="warning" %} 물론, 나중에 호출하기 위해 쉘코드를 저장할 곳을 먼저 찾아야 합니다. {% endhint %}

.fini_array

이것은 프로그램이 종료되기 전에 호출되는 함수들이 포함된 구조입니다. **.dtors**와 마찬가지로 주소로 점프하여 쉘코드를 호출하거나 취약점을 두 번째로 이용하기 위해 다시 main으로 돌아가야 하는 경우에 흥미로울 수 있습니다.

objdump -s -j .fini_array ./greeting

./greeting:     file format elf32-i386

Contents of section .fini_array:
8049934 a0850408

#Put your address in 0x8049934

주의하십시오. 이것은 영원한 루프생성하지 않습니다. 왜냐하면 main으로 돌아가면 canary가 감지하고, 스택의 끝이 손상될 수 있고 함수가 다시 호출되지 않을 수 있습니다. 따라서 이를 통해 취약점을 1번 더 실행할 수 있습니다.

{% hint style="danger" %} Full Relro로 설정된 경우, 섹션 .fini_array읽기 전용으로 만들어집니다. {% endhint %}

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법: