WWW2Exec - .dtors & .fini_array
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
.dtors
caution
요즘은 .dtors 섹션이 있는 바이너리를 찾는 것이 매우 이상합니다!
소멸자는 프로그램이 종료되기 전에 실행되는 함수입니다 ( main
함수가 반환된 후).
이 함수들의 주소는 바이너리의 .dtors
섹션에 저장되며, 따라서 **__DTOR_END__
**에 shellcode의 주소를 쓰기에 성공하면, 프로그램이 종료되기 전에 그것이 실행됩니다.
이 섹션의 주소를 얻으려면:
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
보통 DTOR 마커는 ffffffff
과 00000000
값 사이에 있습니다. 따라서 이 값들만 보인다면 등록된 함수가 없다는 의미입니다. 그러므로 **00000000
**을 실행할 shellcode의 주소로 덮어씌우세요.
warning
물론, 먼저 shellcode를 저장할 장소를 찾아야 나중에 호출할 수 있습니다.
.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
**.fini_array
**에서 함수가 실행될 때 다음 함수로 이동하므로 여러 번 실행되지 않으며(영원한 루프 방지), 여기 배치된 함수는 1회만 실행됩니다.
.fini_array
의 항목은 역순으로 호출되므로 마지막 항목부터 작성하는 것이 좋습니다.
영원한 루프
.fini_array
를 악용하여 영원한 루프를 만들기 위해 여기서 수행된 작업을 확인할 수 있습니다: **.fini_array
**에 최소 2개의 항목이 있는 경우:
- 첫 번째 쓰기를 사용하여 취약한 임의 쓰기 함수를 다시 호출합니다.
- 그런 다음, **
__libc_csu_fini
**에 의해 저장된 스택의 반환 주소를 계산하고 **__libc_csu_fini
**의 주소를 그곳에 넣습니다. - 이렇게 하면 **
__libc_csu_fini
**가 자신을 다시 호출하여.fini_array
함수를 다시 실행하게 되며, 이는 취약한 WWW 함수를 2번 호출합니다: 하나는 임의 쓰기를 위해, 다른 하나는 스택에서 **__libc_csu_fini
**의 반환 주소를 다시 덮어쓰고 자신을 다시 호출하기 위해서입니다.
caution
Full RELRO, 섹션 **.fini_array
**는 읽기 전용으로 설정됩니다.
최신 버전에서는 [Partial RELRO]가 있어도 섹션 **.fini_array
**는 읽기 전용으로 설정됩니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.