Page cover

๐Ÿ˜ซHeap 1

Use after free

Challenge

file-archive
3MB
archive

Overview

Hร m main()

Hร m menu()

Hร m input()

Hร m option2()

Hร m option4()

chแปฉa hร m win

Hร m option1()

Analysis

Tแบกi hร m option4():

ฤแบงu tiรชn nรณ sแบฝ mov giรก trแป‹ cแปงa ฤ‘แป‹a chแป‰ 0x6020f0 vร o thanh ghi rax. Vร  lร m cรกc bฦฐแป›c tiแบฟp theo nhฦฐ trรชn แบฃnh tรดi ฤ‘รฃ ฤ‘รกnh cรกc sแป‘ tฦฐฦกng แปฉng.

Tแปฉc lร  ฤ‘แปƒ thแปa mรฃn ฤ‘iแปu kiแป‡n trรชn thรฌ ฤ‘แป‹a chแป‰ cแปงa 0x6020F8 phแบฃi chแปฉa giรก trแป‹ 0xABCDEF.

Do chฦฐฦกng trรฌnh bแป‹ stripped nรชn tรดi sแบฝ khรดng dรนng gdb ฤ‘แปƒ phรขn tรญch trแปฑc tiแบฟp mร  tรดi sแบฝ thรดng qua pwntools.

Script ฤ‘แบงu tiรชn:

ฤรขy lร  cรกc chunk sau khi tรดi gแปi hร m option1 3 lแบงn

hร m option1

Sau khi bแบกn malloc ฤ‘แปง nhiแปu thรฌ ฤ‘แป‹a chแป‰ mร  ta cแบงn so sรกnh sแบฝ nแบฑm trong cรกc chunk. Nhฦฐ แบฃnh bรชn dฦฐแป›i thรฌ lแบงn cแบฅp phรกt thแปฉ 3 ฤ‘รฃ ฤ‘รจ lรชn ฤ‘แป‹a chแป‰ ฤ‘รณ.

phแบงn data chunk cแปงa chunk thแปฉ nhแบฅt (option1 lแบงn thแปฉ 3) chแปฉa ฤ‘แป‹a chแป‰ cแปงa chunk liแปn kแป trong lแบงn gแปi thแปฉ 3 ฤ‘รณ.

Bรขy giแป tรดi sแบฝ free chunk ฤ‘รณ. Sau ฤ‘รณ thรฌ cแบฅp phรกt lแบกi vแป›i kรญch thฦฐแป›c tฦฐฦกng tแปฑ ฤ‘แปƒ nรณ sแปญ dแปฅng ฤ‘แป‹a chแป‰ chunk vแปซa ฤ‘ฦฐแปฃc free.

Sau khi free thรฌ cแบฃ 2 chunk ฤ‘แปu ฤ‘ฦฐแปฃc nแบกp vร o fastbins. Phแบงn tรดi gแบกch ฤ‘แป lร  con trแป (FD) cแปงa chunk - lร  chunk liแปn trฦฐแป›c cแปงa nรณ

Sau khi chunk ฤ‘ฦฐแปฃc cแบฅp phรกt lแบกi thรฌ ฤ‘แป‹a chแป‰ 0x6020f0 chแปฉa ฤ‘แป‹a chแป‰ cแปงa chunk thแปฉ 2 chแปฉ khรดng phแบฃi chunk ฤ‘แบงu tiรชn nhฦฐ แบฃnh trรชn nแปฏa. Vร  cรกc chunk cลฉng ฤ‘แป•i chแป— cho nhau luรดn.

Nhรฌn vร o ฤ‘oแบกn code assembly แปŸ option4 ฤ‘แปƒ hiแปƒu vรฌ sao tรดi lแบกi so sรกnh giรก trแป‹ 0x019490b8 thay vรฌ ฤ‘แป‹a chแป‰ 0x6020f8.

chunk cแปงa lแบงn chแบกy khรกc (khรดng giแป‘ng vแป›i chunk trรชn)
Bรขy giแป ฤ‘แป‹a chแป‰ mร  chรบng ta cแบงn so sรกnh แปŸ option4() ฤ‘รฃ cรณ giรก trแป‹ thแปa mรฃn.

Viแป‡c cuแป‘i cรนng tรดi cแบงn lร m ฤ‘รณ lร  gแปi option4

Okey vแบญy lร  thร nh cรดng (do tรดi khรดng cรณ path hแปฃp lรญ nhฦฐ source nรชn in ra dรฒng nร y, nแบฟu hแปฃp lรญ thรฌ nรณ sแบฝ in ra flag)

Giแบฃi thรญch

Khi gแปi lแบกi hร m option1 3 lแบงn thรฌ ta sแบฝ cรณ nhแปฏng chunk vแป›i cรกc ฤ‘แป‹a chแป‰ sau ฤ‘รขy:

Nhรฌn bแบฑng sฦก ฤ‘แป“ thรฌ bแบกn cรณ thแปƒ thแบฅy nhฦฐ sau:

Sau khi free 2 chunk cuแป‘i cรนng bแบฑng option 2:

Vร  sau khi cแบฅp phรกt lแบกi bแบฑng 2 lแป‡nh sau

hร m option1

Thรฌ phแบงn dแปฏ liแป‡u ฤ‘รฃ hoร n toร n bแป‹ ฤ‘แบฃo ngฦฐแปฃc

Full code:

Kแบฟt luแบญn:

Cรณ thแปƒ thแบฅy ฤ‘รขy lร  lแป—i useAfterfree (UAF)

Last updated