๐ซHeap 1
Use after free
Challenge
Overview
Hร m main()

Hร m menu()

Hร m input()

Hร m option2()

Hร m option4()

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


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แป ฤรณ.

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 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.


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

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

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
