Baby Calc - WannaGame2022

main

แปž hร m nร y myExpr ฤ‘ฦฐแปฃc cแบฅp phรกt 0x20 bytes

str ฤ‘ฦฐแปฃc ฤ‘แปc 0x80 bytes vร  lฦฐu trรชn stack trong khi bร i nร y chแป‰ cung cแบฅp cho str

setup_data

Nhรฌn dรฒng 5-10: Hร m nร y copy tแปซ cรกi str nhแบญp ban ฤ‘แบงu vร o myExpr theo thแปฉ tแปฑ sau:

แปž dรฒng 9, nแบฟu size cแปงa bแบกn lร  0x10 --> malloc sแบฝ cแบฅp phรกt 0x80 bytes

ฤแปƒ test hร m trรชn, bแบกn cรณ thแปƒ chแบกy hร m sau:

Tแบกi dรฒng 47, sau khi gรกn myExpr->func thรฌ chฦฐฦกng trรฌnh sแบฝ gแปi thแบณng tแป›i LABEL 15: nฦกi ta ฤ‘ฦฐแปฃc phรฉp nhแบญp vแป›i kรญch thฦฐแป›c tรนy รฝ.

Tแบกi ฤ‘รขy xuแบฅt hiแป‡n lแป—i Heap OverFlow

save_result

แปž hร m nร y cรกc biแปƒu thแปฉc sแบฝ ฤ‘ฦฐแปฃc lฦฐu trong str , sau ฤ‘รณ ฤ‘ฦฐแปฃc lฦฐu vร o 1 single linked list vแป›i head

view_result

แปž hร m nร y nรณ chแป‰ in obj->expression ra mร n hรฌnh thรดi, khรดng cรณ gรฌ cแบฃ

cleanup_data

Hร m nร y sแบฝ free thแบฑng buf vแป›i kรญch thฦฐแป›c 0x80 nhรฌn แปŸ hร m setup_data

Memory management

Memory sau mแป—i lแบงn lแบทp:

Overview

Nhรฌn แบฃnh trรชn, cรณ thแปƒ thแบฅy myExpr->buf sau khi ฤ‘ฦฐแปฃc free thรฌ nรณ sแบฝ ฤ‘ฦฐแปฃc ฤ‘แบฉy vร o tcachebins. Gแปi lแบกi 1 lแบงn lแบทp nแปฏa vแป›i kรญch thฦฐแป›c tฦฐฦกng tแปฑ ฤ‘แปƒ tรกi sแปญ dแปฅng chunk nร y.

  1. myExpr (loop1)

  2. myExpr -> buf (loop2) <--- Heap OverFlow here

  3. str (loop1)

  4. obj (loop1)

  5. myExpr (loop2)

  6. str (loop2)

  7. obj (loop2)

Overwrite tแปซ 2 ฤ‘แบฟn 4 ฤ‘แปƒ leak ฤ‘ฦฐแปฃc ฤ‘แป‹a chแป‰ heap.

Last updated