我班上的一个学生想出了一种我以前从未见过的利用缓冲区溢出的技术。(坦率地说,我很惊讶它的工作原理。)我很好奇(1)是否有人以前看过类似的东西,以及(2)这种类型的攻击是否太“脆弱”而无法正常工作。
基本上,漏洞利用的想法是提供表单的输入
AA...A BBBB CC...C,
在标准输入上,哪里AA...A
会导致溢出;保存的 eip 被覆盖BBBB
;CC...C
是shellcode 。CC...C
然而,他并没有用堆栈上的地址覆盖保存的 eip,而是用 stdin 的内存中的地址覆盖了保存的 eip(实际上,是stdin+length(AA...A BBBB)
)。
(对于那些好奇的人:他这样做的原因是因为CC...C
堆栈上的地址包含一个空字节,因此很难用该值覆盖保存的 eip。)
如果这通常有效,那么这似乎是绕过 ASLR 的另一种方法。
想法?