你能解释一下这段代码吗?

时间:2012-10-03 23:51:35

标签: c buffer-overflow

所以我一直在阅读缓冲区溢出和Aleph One关于堆栈粉碎的文章。我想我理解了一切,除了他的漏洞利用代码中的这一点:

ptr = buff;   
addr_ptr = (long *) ptr;
for (i = 0; i < bsize; i+=4)
   *(addr_ptr++) = addr;

buff和ptr是char数组。 addr拥有一个堆栈指针,指向堆栈开头的内存中的一个位置。 bsize是buff的大小。 它在做什么?为什么他说i + = 4?什么是他设置addr_ptr等于,为什么?当我尝试打印出来时,我只是得到NULL。

这是指文章的链接:http://insecure.org/stf/smashstack.html

感谢。

1 个答案:

答案 0 :(得分:3)

每次移动4个字节进行一个字(8位* 4字节= 32位字)。请注意,他在您的代码示例后面的段落中评论了他的猜测和测试方法。

他在黑暗中射击,试图溢出缓冲区。 addr_ptr被设置为ptr的地址,然后被推送到for循环中的缓冲区。