diff --git a/SUMMARY.md b/SUMMARY.md
index c76bee72e..e688d3892 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -736,6 +736,7 @@
* [Fast Bin Attack](binary-exploitation/heap/fast-bin-attack.md)
* [Unsorted Bin Attack](binary-exploitation/heap/unsorted-bin-attack.md)
* [Large Bin Attack](binary-exploitation/heap/large-bin-attack.md)
+ * [Tcache Bin Attack](binary-exploitation/heap/tcache-bin-attack.md)
* [Off by one overflow](binary-exploitation/heap/off-by-one-overflow.md)
* [House of Spirit](binary-exploitation/heap/house-of-spirit.md)
* [House of Lore](binary-exploitation/heap/house-of-lore.md)
@@ -762,7 +763,7 @@
* [WWW2Exec - atexit()](binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md)
* [WWW2Exec - .dtors & .fini\_array](binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)
* [WWW2Exec - GOT/PLT](binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md)
- * [WWW2Exec - \_\_malloc\_hook](binary-exploitation/arbitrary-write-2-exec/aw2exec-\_\_malloc\_hook.md)
+ * [WWW2Exec - \_\_malloc\_hook & \_\_free\_hook](binary-exploitation/arbitrary-write-2-exec/aw2exec-\_\_malloc\_hook.md)
* [Common Exploiting Problems](binary-exploitation/common-exploiting-problems.md)
* [Windows Exploiting (Basic Guide - OSCP lvl)](binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
diff --git a/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md b/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md
index e9706b3ae..76cd276fd 100644
--- a/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md
+++ b/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md
@@ -1,35 +1,60 @@
-# WWW2Exec - \_\_malloc\_hook
+# WWW2Exec - \_\_malloc\_hook & \_\_free\_hook
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
+htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
-* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **해킹 요령을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [telegram 그룹](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **HackTricks** 및 **HackTricks Cloud** github 저장소로 **PR 제출**하여 해킹 트릭을 **공유**하세요.
## **Malloc Hook**
-공식 GNU 사이트에 따르면, 변수 **`__malloc_hook`**은 `malloc()`이 호출될 때마다 호출될 함수의 **주소를 가리키는 포인터**로, **libc 라이브러리의 데이터 섹션에 저장**됩니다. 따라서 이 주소가 **One Gadget**과 같은 것으로 덮어씌워지고 `malloc`이 호출되면 **One Gadget이 호출**됩니다.
+[GNU 공식 사이트](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html)에 따르면 **`__malloc_hook`** 변수는 `malloc()`이 호출될 때 **호출될 함수의 주소를 가리키는 포인터**로, **libc 라이브러리의 데이터 섹션에 저장**됩니다. 따라서 이 주소가 **One Gadget**과 같은 것으로 덮어씌워지고 `malloc`이 호출되면 **One Gadget이 호출**됩니다.
-malloc을 호출하려면 프로그램이 호출할 때까지 기다리거나 **`printf("%10000$c")`**를 호출하여 `libc`가 힙에 그들을 할당하도록 하는 너무 많은 바이트를 할당할 수 있습니다.
+malloc을 호출하는 방법은 프로그램이 호출할 때까지 기다리거나 **`printf("%10000$c")`를 호출**하여 `libc`가 많은 바이트를 할당하도록 만들어 `malloc`이 힙에 할당하도록 하는 것입니다.
-One Gadget에 대한 자세한 정보:
+One Gadget에 대한 자세한 정보는:
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %}
[one-gadget.md](../rop-return-oriented-programing/ret2lib/one-gadget.md)
{% endcontent-ref %}
{% hint style="warning" %}
-후크는 **GLIBC >= 2.34**에서 **비활성화**됩니다. 최신 GLIBC 버전에서 사용할 수 있는 다른 기술이 있습니다. 참조: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
+후크는 **GLIBC >= 2.34**에 대해 **비활성화**됩니다. 최신 GLIBC 버전에서 사용할 수 있는 다른 기술이 있습니다. 참조: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
{% endhint %}
+## Free Hook
+
+이것은 페이지에서 빠른 bin 공격을 남용한 후에 빠른 bin 공격이 수행되었습니다:
+
+{% content-ref url="../heap/unsorted-bin-attack.md" %}
+[unsorted-bin-attack.md](../heap/unsorted-bin-attack.md)
+{% endcontent-ref %}
+
+이제 **빠른 bin 공격**이 수행됩니다:
+
+* 먼저 **`__free_hook`** 위치에서 크기가 200인 빠른 **청크들과 작업이 가능**하다는 것을 발견했습니다:
+*
gef➤ p &__free_hook
+$1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 <__free_hook>
+gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
+0x7ff1e9e6074f: 0x0000000000000000 0x0000000000000200
+0x7ff1e9e6075f: 0x0000000000000000 0x0000000000000000
+0x7ff1e9e6076f <list_all_lock+15>: 0x0000000000000000 0x0000000000000000
+0x7ff1e9e6077f <_IO_stdfile_2_lock+15>: 0x0000000000000000 0x0000000000000000
+
+* 이 위치에 크기가 0x200인 빠른 청크를 얻으면 실행될 함수 포인터를 덮어쓸 수 있습니다.
+* 이를 위해 크기가 `0xfc`인 새로운 청크를 만들고 해당 포인터로 병합 함수를 두 번 호출하여 크기가 `0xfc*2 = 0x1f8`인 해제된 청크의 포인터를 얻습니다.
+* 그런 다음, 이 빠른 bin의 **`fd`** 주소를 이전 **`__free_hook`** 함수를 가리키도록 수정하기 위해 이 청크에서 편집 함수를 호출합니다.
+* 그런 다음, 크기가 `0x1f8`인 청크를 만들어 불필요한 이전 청크를 빠른 bin에서 검색하여 **`__free_hook`**에 빠른 bin 청크를 얻습니다. 이 위치에 **`system`** 함수의 주소로 덮어쓰기합니다.
+* 마지막으로 `/bin/sh\x00` 문자열을 포함하는 청크를 삭제 함수를 호출하여 **`__free_hook`** 함수를 트리거하여 `/bin/sh\x00`을 매개변수로 사용하여 시스템을 가리키게 합니다.
+
## References
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
@@ -37,14 +62,14 @@ One Gadget에 대한 자세한 정보:
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
+htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
-* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **해킹 요령을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [telegram 그룹](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **HackTricks** 및 **HackTricks Cloud** github 저장소로 **PR 제출**하여 해킹 트릭을 **공유**하세요.
diff --git a/binary-exploitation/heap/fast-bin-attack.md b/binary-exploitation/heap/fast-bin-attack.md
index b6986619f..fcaa70309 100644
--- a/binary-exploitation/heap/fast-bin-attack.md
+++ b/binary-exploitation/heap/fast-bin-attack.md
@@ -2,21 +2,27 @@
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
+htARTE (HackTricks AWS Red Team 전문가)을 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
-HackTricks를 지원하는 다른 방법:
+다른 HackTricks 지원 방법:
-- **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하길 원한다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-- [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-- **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)을 **팔로우**하세요.
-- **해킹 트릭을 공유하려면 PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 제출하세요.
+- **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+- [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요.
+- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
+- **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+- **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
## 기본 정보
-빠른 바인이 단일 링크드이므로 다른 바인보다 보호 기능이 훨씬 적습니다. 그리고 **해제된 빠른 바인 청크에서 주소를 수정하는 것만으로도 이후에 임의의 메모리 주소에 청크를 할당**할 수 있습니다.
+빠른 바인에 대한 자세한 정보는 다음 페이지를 확인하세요:
+
+{% content-ref url="bins-and-memory-allocations.md" %}
+[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
+{% endcontent-ref %}
+
+빠른 바인은 단일 링크이므로 다른 바인보다 보호 기능이 훨씬 적습니다. 그리고 **해제된 빠른 바인 청크의 주소를 수정**하는 것만으로도 **이후에 어떤 메모리 주소에서든 청크를 할당**할 수 있습니다.
요약하면:
@@ -126,21 +132,24 @@ printf("Chunk 5: %p\t Contains: 0x%x\n", ptr5, (int)*ptr5);
printf("\n\nJust like that, we executed a fastbin attack to allocate an address to a stack variable using malloc!\n");
}
-
```
+{% hint style="danger" %}
+만약 글로벌 변수 **`global_max_fast`**의 값을 큰 숫자로 덮어쓸 수 있다면, 더 큰 크기의 fast bin을 생성할 수 있어 이전에는 불가능했던 시나리오에서 fast bin 공격을 수행할 수 있게 됩니다.
+{% endhint %}
+
## 예시
* **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html)**:**
* 청크를 할당하고 해제한 다음, 그 내용을 읽고 채울 수 있습니다 (오버플로우 취약점을 이용).
-* **정보 누출을 위한 청크 통합**: 이 기술은 오버플로우를 악용하여 가짜 prev\_size를 생성하여 이전 청크를 더 큰 청크 안에 넣어, 더 큰 청크를 할당할 때 다른 청크를 포함하는 것이 가능하며, 그 데이터를 인쇄하고 libc(main\_arena+88) 주소를 누출할 수 있습니다.
-* **malloc 후크 덮어쓰기**: 이를 위해 이전에 겹치는 상황을 악용하여 동일한 메모리를 가리키는 2개의 청크를 가질 수 있었습니다. 따라서 두 청크를 모두 해제하면 (보호를 피하기 위해 중간에 다른 청크를 해제), 빠른 바인에 동일한 청크를 2번 넣을 수 있었습니다. 그런 다음, 다시 할당하여 다음 청크를 malloc\_hook 앞쪽을 가리키도록 덮어쓰고 (malloc이 무료 크기로 생각하는 정수를 가리키도록 하여 다른 우회), 다시 할당하고 malloc 후크 주소를 받을 다른 청크를 할당할 수 있습니다.\
+* **정보 누출을 위한 청크 통합**: 오버플로우를 악용하여 가짜 prev\_size를 생성하여 이전 청크를 더 큰 청크 안에 넣어, 더 큰 청크를 할당할 때 다른 청크를 포함하는 것이 가능하며, 그 데이터를 인쇄하고 libc(main\_arena+88) 주소를 누출할 수 있습니다.
+* **malloc 후크 덮어쓰기**: 이를 위해 이전에 겹치는 상황을 악용하여 같은 메모리를 가리키는 2개의 청크를 가질 수 있었습니다. 따라서 두 청크를 모두 해제한 후 (보호 기능을 피하기 위해 중간에 다른 청크를 해제), 같은 청크를 fast bin에 2번 넣을 수 있었습니다. 그런 다음, 다시 할당하여 다음 청크의 주소를 malloc\_hook 앞쪽을 가리키도록 덮어쓰고 (malloc이 무료 크기로 생각하는 정수를 가리키도록 하여 다른 우회), 다시 할당하고 malloc 후크 주소를 받을 다른 청크를 할당할 수 있습니다.\
마지막으로 **원 가젯**이 거기에 작성되었습니다.
* **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html)**:**
-* 힙 오버플로우와 사용 후 해제, 더블 해제가 있습니다. 청크가 해제되면 포인터를 재사용하고 다시 해제할 수 있습니다.
-* **Libc 정보 누출**: 일부 청크를 해제하면 메인 아레나 위치의 일부를 가리키는 포인터를 얻을 수 있습니다. 해제된 포인터를 재사용할 수 있으므로 이 주소를 읽을 수 있습니다.
-* **Fast bin 공격**: 할당에 대한 모든 포인터는 배열 내에 저장되므로 몇 개의 fast bin 청크를 해제하고 마지막 청크에서 이 포인터 배열의 앞쪽을 가리키도록 주소를 덮어쓸 수 있습니다. 그런 다음, 동일한 크기로 몇 개의 청크를 할당하면 먼저 정품 청크를 얻은 다음 포인터 배열을 포함하는 가짜 청크를 얻을 수 있습니다. 이제 이 할당 포인터를 `free`의 got 주소를 가리키도록 덮어쓸 수 있고, 그런 다음 청크 1 `"/bin/sh"`를 쓴 다음 `free(chunk1)`을 실행하여 `system("/bin/sh")`를 실행할 수 있습니다.
-
-Fast Bin 공격이 어떻게 정렬되지 않은 bin 공격을 통해 악용되는지 예시에서 찾을 수 있습니다:
+* 힙 오버플로우와 사용 후 해제, 그리고 더블 해제가 있습니다. 청크가 해제되면 재사용하고 포인터를 다시 해제할 수 있습니다.
+* **Libc 정보 누출**: 일부 청크를 해제하면 메인 아레나 위치의 일부를 가리키는 포인터를 얻을 수 있습니다. 해제된 포인터를 재사용할 수 있기 때문에 이 주소를 읽을 수 있습니다.
+* **Fast bin 공격**: 할당된 모든 포인터는 배열 안에 저장되므로 몇 개의 fast bin 청크를 해제하고 마지막 청크에서 이 포인터 배열 앞쪽을 가리키도록 주소를 덮어쓸 수 있습니다. 그런 다음, 동일한 크기의 몇 개의 청크를 할당하면 먼저 정품 청크를 얻은 다음 포인터 배열을 포함하는 가짜 청크를 얻을 수 있습니다. 이제 이 할당 포인터를 `free`의 got 주소를 가리키도록 덮어쓸 수 있고, 그런 다음 청크 1 `"/bin/sh"`를 쓴 후 `free(chunk1)`을 실행하여 `system("/bin/sh")`를 실행할 수 있습니다.
+* 정렬되지 않은 bin 공격을 통해 남용된 Fast Bin 공격을 찾을 수 있습니다.
+* 참고
{% content-ref url="unsorted-bin-attack.md" %}
[unsorted-bin-attack.md](unsorted-bin-attack.md)
@@ -148,14 +157,14 @@ Fast Bin 공격이 어떻게 정렬되지 않은 bin 공격을 통해 악용되
-제로부터 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!
+htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나** **PDF로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요**.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
diff --git a/binary-exploitation/heap/large-bin-attack.md b/binary-exploitation/heap/large-bin-attack.md
new file mode 100644
index 000000000..0c4dd7a43
--- /dev/null
+++ b/binary-exploitation/heap/large-bin-attack.md
@@ -0,0 +1,78 @@
+# 대형 Bin 공격
+
+
+
+htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+
+HackTricks를 지원하는 다른 방법:
+
+* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
+* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **해킹 요령을 공유하려면 PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 기여하세요.
+
+
+
+## 기본 정보
+
+대형 Bin이 무엇인지에 대한 자세한 정보는 다음 페이지를 확인하세요:
+
+{% content-ref url="bins-and-memory-allocations.md" %}
+[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
+{% endcontent-ref %}
+
+[**how2heap - large bin attack**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c)에서 좋은 예제를 찾을 수 있습니다.
+
+기본적으로 최신 "현재" 버전의 glibc(2.35)에서는 **`P->bk_nextsize`**가 확인되지 않아 특정 조건이 충족되면 대형 Bin 청크의 값을 사용하여 임의의 주소를 수정할 수 있습니다.
+
+해당 예제에서 다음 조건을 찾을 수 있습니다:
+
+* 대형 청크가 할당됨
+* 첫 번째 청크보다 작지만 동일한 인덱스에 있는 대형 청크가 할당됨
+* 첫 번째 청크보다 작아야 하므로 첫 번째로 가야 함
+* (상단 청크와 병합을 방지하기 위한 청크가 생성됨)
+* 그런 다음, 첫 번째 대형 청크가 해제되고 그보다 큰 새로운 청크가 할당됨 -> 청크1이 대형 Bin으로 이동
+* 그런 다음, 두 번째 대형 청크가 해제됨
+* 이제 취약점: 공격자는 `chunk1->bk_nextsize`를 `[target-0x20]`로 수정할 수 있음
+* 그런 다음, 청크 2보다 큰 청크가 할당되어 청크2가 대형 Bin에 삽입되어 `chunk1->bk_nextsize->fd_nextsize` 주소가 청크2의 주소로 덮어씌워짐
+
+{% hint style="success" %}
+다른 잠재적인 시나리오가 있습니다. 중요한 것은 현재 X 청크보다 **작은** 청크를 대형 Bin에 추가하는 것이며, 따라서 해당 청크가 Bin에서 바로 전에 삽입되어야 하며 X의 **`bk_nextsize`**를 수정할 수 있어야 합니다. 작은 청크의 주소가 기록될 위치입니다.
+{% endhint %}
+
+이것은 malloc에서의 관련 코드입니다. 주소가 덮어쓰여진 방식을 더 잘 이해하기 위해 주석이 추가되었습니다:
+
+{% code overflow="wrap" %}
+```c
+/* if smaller than smallest, bypass loop below */
+assert (chunk_main_arena (bck->bk));
+if ((unsigned long) (size) < (unsigned long) chunksize_nomask (bck->bk))
+{
+fwd = bck; // fwd = p1
+bck = bck->bk; // bck = p1->bk
+
+victim->fd_nextsize = fwd->fd; // p2->fd_nextsize = p1->fd (Note that p1->fd is p1 as it's the only chunk)
+victim->bk_nextsize = fwd->fd->bk_nextsize; // p2->bk_nextsize = p1->fd->bk_nextsize
+fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim; // p1->fd->bk_nextsize->fd_nextsize = p2
+}
+```
+{% endcode %}
+
+이것은 더 큰 청크로 빠른 bin 공격을 수행하기 위해 libc의 `global_max_fast` 글로벌 변수를 덮어쓸 수 있습니다.
+
+이 공격에 대한 또 다른 훌륭한 설명을 [**guyinatuxedo**](https://guyinatuxedo.github.io/32-largebin\_attack/largebin\_explanation0/index.html)에서 찾을 수 있습니다.
+
+
+
+htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요 htARTE (HackTricks AWS Red Team Expert)!
+
+HackTricks를 지원하는 다른 방법:
+
+* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks를 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+
+
diff --git a/binary-exploitation/heap/tcache-bin-attack.md b/binary-exploitation/heap/tcache-bin-attack.md
new file mode 100644
index 000000000..8d5d77488
--- /dev/null
+++ b/binary-exploitation/heap/tcache-bin-attack.md
@@ -0,0 +1,29 @@
+# Tcache Bin Attack
+
+
+
+htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 제로부터 전문가까지 배우세요
+
+HackTricks를 지원하는 다른 방법:
+
+* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
+* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **해킹 요령을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+
+
+
+## 기본 정보
+
+Tcache bin이 무엇인지에 대한 자세한 정보는 다음 페이지를 확인하세요:
+
+{% content-ref url="bins-and-memory-allocations.md" %}
+[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
+{% endcontent-ref %}
+
+먼저, Tcache는 glibc 버전 2.26에서 소개되었다는 점을 유의하십시오.
+
+[**guyinatuxido 페이지**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html)에서 제안된 **Tcache** 공격은 fast bin 공격과 매우 유사하며, 목표는 해제된 청크 내부의 bin에 있는 다음 청크로의 포인터를 임의의 주소로 덮어쓰기하여 나중에 **해당 특정 주소를 할당하고 포인터를 덮어쓸 수 있도록**하는 것입니다.
+
+그러나 현재는 해당 코드를 실행하면 **`malloc(): unaligned tcache chunk detected`** 오류가 발생합니다. 따라서 새 포인터에 정렬된 주소를 쓰거나 (또는 쓰인 주소가 실제로 정렬되도록 이진을 충분히 실행)해야 합니다.
diff --git a/binary-exploitation/heap/unsorted-bin-attack.md b/binary-exploitation/heap/unsorted-bin-attack.md
new file mode 100644
index 000000000..112c1cdd9
--- /dev/null
+++ b/binary-exploitation/heap/unsorted-bin-attack.md
@@ -0,0 +1,85 @@
+# Unsorted Bin Attack
+
+
+
+htARTE (HackTricks AWS Red Team 전문가)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**!
+
+HackTricks를 지원하는 다른 방법:
+
+* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
+* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* **HackTricks** 및 **HackTricks Cloud** github 저장소로 **PR 제출**하여 해킹 트릭을 공유하세요.
+
+
+
+## 기본 정보
+
+Unsorted bin이 무엇인지에 대한 자세한 정보는 다음 페이지를 확인하세요:
+
+{% content-ref url="bins-and-memory-allocations.md" %}
+[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
+{% endcontent-ref %}
+
+Unsorted 리스트는 청크의 `bk` 주소에 `unsorted_chunks (av)`의 주소를 쓸 수 있습니다. 따라서, 공격자가 unsorted bin 내부의 청크에서 **bk 포인터의 주소를 수정**할 수 있다면, 임의의 주소에 해당 주소를 쓸 수 있어 libc 주소를 노출하거나 일부 방어를 우회하는 데 도움이 될 수 있습니다.
+
+따라서, 기본적으로 이 공격은 **큰 숫자(힙 주소 또는 libc 주소가 될 수 있는 주소)로 임의의 주소를 덮어쓸 수 있게 했으며**, 누출될 수 있는 스택 주소 또는 전역 변수인 **`global_max_fast`**와 같은 제한을 우회하여 더 큰 크기의 fast bin bins를 생성할 수 있도록 허용합니다 (unsorted bin 공격에서 fast bin 공격으로 전환).
+
+{% hint style="success" %}
+[https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle)에서 제공된 예제를 살펴보고 0x400과 0x500 대신 0x4000과 0x5000을 사용하여 (tcaches를 피하기 위해) **현재** 오류 **`malloc(): unsorted double linked list corrupted`**가 트리거되는 것을 볼 수 있습니다.
+
+따라서, 이제 이 unsorted bin 공격은 (다른 확인 사항과 함께) 또한 이중 연결 목록을 수정할 수 있어야 하므로 `victim->bck->fd == victim` 또는 `victim->fd == av (arena)`가 우회되어야 합니다. 즉, 우리가 원하는 주소는 가짜 청크의 `fd` 위치에 가짜 청크의 주소가 있어야 하며, 가짜 청크의 `fd`가 아레나를 가리켜야 합니다.
+{% endhint %}
+
+{% hint style="danger" %}
+이 공격은 unsorted bin (작은 크기 및 큰 크기도)를 손상시킵니다. 따라서 이제 **이제 fast bin에서만 할당을 사용할 수 있습니다** (더 복잡한 프로그램은 다른 할당을 수행하고 충돌할 수 있음) 및 이를 트리거하려면 **같은 크기로 할당해야 합니다.**
+
+이 경우 **`global_max_fast`**를 만드는 것이 도움이 될 수 있으며, fast bin이 모든 다른 할당을 처리할 수 있을 것으로 신뢰할 수 있습니다. 공격이 완료될 때까지.
+{% endhint %}
+
+[**guyinatuxedo**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/unsorted\_explanation/index.html)의 코드는 매우 잘 설명하고 있지만, malloc을 수정하여 tcache에 끝나지 않도록 충분히 큰 메모리를 할당하면 이전에 언급한 오류가 발생하여 이 기술을 방지하는 것을 볼 수 있습니다: **`malloc(): unsorted double linked list corrupted`**
+
+## 참고 및 다른 예제
+
+* [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap)
+* 글로벌 변수를 4869보다 큰 값으로 덮어쓰기 위한 목표이며, PIE가 활성화되지 않았습니다.
+* 임의의 크기의 청크를 생성할 수 있으며 원하는 크기의 힙 오버플로우가 있습니다.
+* 공격은 오버플로우를 악용하기 위해 chunk0, 오버플로우될 chunk1 및 이전 청크를 합병하지 않도록 하는 chunk2를 생성하여 시작됩니다.
+* 그런 다음, chunk1이 해제되고 chunk0이 chunk1의 `bk` 포인터로 오버플로우되어야 합니다: `bk = magic - 0x10`
+* 그런 다음, chunk1과 동일한 크기로 chunk3이 할당되며, 이는 unsorted bin 공격을 트리거하고 글로벌 변수의 값을 수정하여 플래그를 얻을 수 있게 합니다.
+* [**https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html)
+* 병합 함수는 두 인덱스가 동일한 경우 다시 할당하고 해제하지만 사용할 수 있는 그 해제된 영역을 가리키는 포인터를 반환합니다.
+* 따라서, **2개의 청크가 생성**됩니다: **chunk0**은 자체와 병합되고 이전 청크와 병합되지 않도록 하기 위해 chunk1이 생성됩니다. 그런 다음, **chunk0으로 병합 함수가 두 번 호출**되어 사용 후 무료가 발생합니다.
+* 그런 다음, **`view`** 함수가 사용 후 무료 청크의 인덱스인 2로 호출되어 **libc 주소를 노출**합니다.
+* 바이너리가 **`global_max_fast`**보다 큰 크기의 malloc만 허용하는 보호를 가지고 있기 때문에 fastbin을 사용하지 않으므로 unsorted bin 공격을 사용하여 글로벌 변수 `global_max_fast`를 덮어쓸 수 있습니다.
+* 그런 다음, 사용 후 무료 포인터인 인덱스 2로 편집 함수를 호출하여 `bk` 포인터를 `p64(global_max_fast-0x10)`을 가리키도록 덮어쓸 수 있습니다. 그런 다음, 새로운 청크를 생성하면 이전에 손상된 무료 주소(0x20)가 사용되어 **unsorted bin 공격이 트리거**되어 `global_max_fast`가 매우 큰 값으로 덮어씌워져 이제 fast bin에 청크를 생성할 수 있게 됩니다.
+* 이제 **fast bin 공격**이 수행됩니다:
+* 먼저 **`__free_hook` 위치에서 크기가 200인 fast 청크로 작업할 수 있다는 것을 발견**했습니다:
+* gef➤ p &__free_hook
+$1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 <__free_hook>
+gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
+0x7ff1e9e6074f: 0x0000000000000000 0x0000000000000200
+0x7ff1e9e6075f: 0x0000000000000000 0x0000000000000000
+0x7ff1e9e6076f <list_all_lock+15>: 0x0000000000000000 0x0000000000000000
+0x7ff1e9e6077f <_IO_stdfile_2_lock+15>: 0x0000000000000000 0x0000000000000000
+
+* 이 위치에 크기가 0x200인 fast 청크를 얻으면 실행될 함수 포인터를 덮어쓸 수 있습니다.
+* 이를 위해 크기 `0xfc`의 새로운 청크가 생성되고 해당 포인터로 병합 함수가 두 번 호출되어 fast bin에서 크기 `0xfc*2 = 0x1f8`의 해제된 청크에 대한 포인터를 얻습니다.
+* 그런 다음, 이 청크에서 edit 함수가 호출되어 이 fast bin의 `fd` 주소를 이전 **`__free_hook`** 함수를 가리키도록 수정합니다.
+* 그런 다음, 크기가 `0x1f8`인 청크가 생성되어 빠른 bin에서 이전에 사용되지 않았던 청크를 검색하여 `0x1f8` 크기의 또 다른 청크가 **`__free_hook`**에서 빠른 bin 청크를 가져오고, 이는 **`system`** 함수의 주소로 덮어씁니다.
+* 마지막으로 `/bin/sh\x00` 문자열을 포함하는 청크가 삭제 함수를 호출하여 해제되고, `/bin/sh\x00`을 매개변수로 하는 system을 가리키는 **`__free_hook`** 함수가 트리거됩니다.
+
+
+
+htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 제로부터 전문가로 배우세요!
+
+HackTricks를 지원하는 다른 방법:
+
+* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
+* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
+* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
+* 💬 **Discord 그룹**에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 팔로우하세요.
+* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+
+