我对缓冲区溢出攻击有疑问。我正在尝试编写一个自动python工具来消除程序War-FTP 1.6.5的不良字符。 该程序存在缓冲区溢出漏洞。我知道坏字符是 \ x00 \ x0d \ x0a \ x40 。 我的工具找到了两个不好的字符: \ x0a \ x0d 。
test_chars="\x01...\x0ff\x00"
测试好的和坏的字符将被移动到名为good_chars和bad_chars的列表中。测试的字符将从test_chars中删除。
覆盖EIP的偏移量为485.
buffer="\x90"*485+"AAAA"(Windows XP SP 3 German on a virtual machine)
EIP将被" AAAA"和War-FTP崩溃,如果我的工具发送此缓冲区。
现在出现了奇怪的事情:
buffer="\x90"*485+"AAAA"+"\x0e\x0f...\xff\x00"
如果我的工具发送此缓冲区,War-Ftp不会崩溃,并说用户名是非法的。
有人可以解释为什么应用程序不会崩溃吗?
程序崩溃缓冲区=" \ x90" * 485 +" AAAA"和缓冲区=" \ x90" * 485 +" AAAA" +" \ x01 ... \ xff \ x00",但没有缓冲区=" \ X90&#34 * 485 +" AAAA" +" \ x0e \ X0F ... \ XFF \ X00"
我认为每个大于489字节的缓冲区都是程序的问题,因为486-489会覆盖EIP。