Large Bin Attack
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
Basic Information
๋ํ ๋น์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ด ํ์ด์ง๋ฅผ ํ์ธํ์ธ์:
how2heap - large bin attack์์ ํ๋ฅญํ ์์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ธฐ์์ glibc์ ์ต์ โํ์ฌโ ๋ฒ์ (2.35)์์ **P->bk_nextsize**๊ฐ ํ์ธ๋์ง ์์ ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๋ํ ๋น ์ฒญํฌ์ ๊ฐ์ผ๋ก ์์์ ์ฃผ์๋ฅผ ์์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ ์์ ์์ ๋ค์ ์กฐ๊ฑด์ ์ฐพ์ ์ ์์ต๋๋ค:
- ๋ํ ์ฒญํฌ๊ฐ ํ ๋น๋จ
- ์ฒซ ๋ฒ์งธ ์ฒญํฌ๋ณด๋ค ์์ง๋ง ๊ฐ์ ์ธ๋ฑ์ค์ ์๋ ๋ํ ์ฒญํฌ๊ฐ ํ ๋น๋จ
- ๋น์์ ๋จผ์ ๊ฐ์ผ ํ๋ฏ๋ก ๋ ์์์ผ ํจ
- (์๋จ ์ฒญํฌ์ ๋ณํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ์ฒญํฌ๊ฐ ์์ฑ๋จ)
- ๊ทธ๋ฐ ๋ค์ ์ฒซ ๋ฒ์งธ ๋ํ ์ฒญํฌ๊ฐ ํด์ ๋๊ณ ๊ทธ๋ณด๋ค ํฐ ์ ์ฒญํฌ๊ฐ ํ ๋น๋จ -> Chunk1์ด ๋ํ ๋น์ผ๋ก ์ด๋
- ๊ทธ๋ฐ ๋ค์ ๋ ๋ฒ์งธ ๋ํ ์ฒญํฌ๊ฐ ํด์ ๋จ
- ์ด์ ์ทจ์ฝ์ : ๊ณต๊ฒฉ์๋
chunk1->bk_nextsize๋ฅผ[target-0x20]๋ก ์์ ํ ์ ์์ - ๊ทธ๋ฐ ๋ค์ ์ฒญํฌ 2๋ณด๋ค ํฐ ์ฒญํฌ๊ฐ ํ ๋น๋๋ฏ๋ก chunk2๊ฐ ๋ํ ๋น์ ์ฝ์
๋์ด
chunk1->bk_nextsize->fd_nextsize์ ์ฃผ์๋ฅผ chunk2์ ์ฃผ์๋ก ๋ฎ์ด์
Tip
๋ค๋ฅธ ์ ์ฌ์ ์ธ ์๋๋ฆฌ์ค๊ฐ ์์ผ๋ฉฐ, ์ค์ํ ๊ฒ์ ๋ํ ๋น์ ํ์ฌ ๋น์ X ์ฒญํฌ๋ณด๋ค ์์ ์ฒญํฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋น์์ X ๋ฐ๋ก ์์ ์ฝ์ ๋์ด์ผ ํ๋ฉฐ, X์ **
bk_nextsize**๋ฅผ ์์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๋ ์์ ์ฒญํฌ์ ์ฃผ์๊ฐ ๊ธฐ๋ก๋ ์์น์ ๋๋ค.
์ด๊ฒ์ malloc์ ๊ด๋ จ ์ฝ๋์ ๋๋ค. ์ฃผ์๊ฐ ์ด๋ป๊ฒ ๋ฎ์ด์์์ก๋์ง ๋ ์ ์ดํดํ ์ ์๋๋ก ์ฃผ์์ด ์ถ๊ฐ๋์์ต๋๋ค:
/* 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
}
์ด๊ฒ์ libc์ global_max_fast ์ ์ญ ๋ณ์๋ฅผ ๋ฎ์ด์ฐ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ์ดํ ๋ ํฐ ์ฒญํฌ๋ก ๋น ๋ฅธ ๋น ๊ณต๊ฒฉ์ ์
์ฉํ ์ ์์ต๋๋ค.
์ด ๊ณต๊ฒฉ์ ๋ํ ๋ ๋ค๋ฅธ ํ๋ฅญํ ์ค๋ช ์ guyinatuxedo์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์์
- La casa de papel. HackOn CTF 2024
- how2heap์์ ๋ํ๋๋ ๊ฒ๊ณผ ๊ฐ์ ์ํฉ์์์ ๋ํ ๋น ๊ณต๊ฒฉ.
- ์ฐ๊ธฐ ์์ ์์
์ ๋ ๋ณต์กํฉ๋๋ค. ์๋ํ๋ฉด
global_max_fast๋ ์ฌ๊ธฐ์ ์ธ๋ชจ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. - FSOP๊ฐ ๊ณต๊ฒฉ์ ์๋ฃํ๋ ๋ฐ ํ์ํฉ๋๋ค.
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


