4.2 KiB
AWS2Exec - .dtors & .fini_array
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
.dtors
{% hint style="danger" %} 요즘은 .dtors 섹션이 있는 바이너리를 찾는 것이 매우 이상합니다. {% endhint %}
소멸자는 프로그램이 끝나기 전에 실행되는 함수입니다 ( main
함수가 반환된 후).
이 함수들의 주소는 바이너리의 .dtors
섹션에 저장되며, 따라서 **__DTOR_END__
**에 주소를 shellcode로 쓰기에 성공하면, 프로그램이 끝나기 전에 실행됩니다.
이 섹션의 주소를 얻으려면:
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
보통 DTOR 마커는 ffffffff
과 00000000
값 사이에서 찾을 수 있습니다. 따라서 이러한 값을 보면 등록된 함수가 없다는 의미입니다. 그러므로 **00000000
**을 실행할 shellcode의 주소로 덮어씌우십시오.
{% hint style="warning" %} 물론, 먼저 shellcode를 저장할 장소를 찾아야 나중에 호출할 수 있습니다. {% endhint %}
.fini_array
본질적으로 이것은 프로그램이 종료되기 전에 호출될 함수들로 구성된 구조체입니다. 이는 **.dtors
**와 유사합니다. 주소로 점프하여 shellcode를 호출할 수 있거나, 취약점을 두 번째로 악용하기 위해 다시 main
으로 돌아가야 하는 경우에 흥미롭습니다.
objdump -s -j .fini_array ./greeting
./greeting: file format elf32-i386
Contents of section .fini_array:
8049934 a0850408
#Put your address in 0x8049934
Note that this won't create an eternal loop because when you get back to main the canary will notice, the end of the stack might be corrupted and the function won't be recalled again. So with this you will be able to have 1 more execution of the vuln.
{% hint style="danger" %}
Note that with Full RELRO, the section .fini_array
is made read-only.
{% endhint %}
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.