缓冲区溢出是如何工作的?

时间:2011-03-11 23:53:09

标签: c security assembly shellcode

我想在网上有类似的问题和一些数据...但我想确保我正确掌握这个概念,因为所有的在线教程都太长,并且专注于漏洞利用等等。所以,我认为简单的缓冲区溢出的方式将是:

  

/////////////////////////////////////////////// ///

     
      
  1. 你发送一串参数/输入:nop   说明(x90)+ shellcode +一些   一些nop的文字+地址   指令。

  2.   
  3. 如果字符串长度正确,它将覆盖返回值   使用某些地址解决ebp问题   nop指令。一旦它跳了起来   那里 - 它会跳过,直到   到达shellcode ....其余的   是历史。

  4.         

    /////////////////////////////////////////////// /

我更像是一个c ++ / php / c#类型的人和汇编而且c超出了我的心智能力....大声笑......所以认真......或者开玩笑......就是上面描述的东西?另外,据我所知,对缓冲区有一些保护措施。尽管我还没有对它们进行处理。防火墙如何抓住这个?

10倍!

3 个答案:

答案 0 :(得分:4)

对于任何认真了解缓冲区溢出如何工作的人来说,

Smashing the stack for fun and profit 必读 。你找不到比白皮书提供的更好的答案。

修改

如果你已经阅读过 Smashing the stack 并希望更进一步,那么我建议你阅读Hacking: The Art of Exploitation 2nd Ed

Hacking: The Art of Exploitation

答案 1 :(得分:1)

是的,这是探索缓冲区溢出的一种方法。 This book是一本很棒的读物。

我不知道有任何防火墙能够监控其他应用程序上的缓冲区溢出(如果这就是你的意思)。

答案 2 :(得分:0)

具体而言,您所描述的内容称为 NOP雪橇(或“幻灯片”或“渐变”)。 Here是一篇文章,提供了一个真实世界的蜜罐示例。

您可以通过例如将读入的字符数限制为小于缓冲区大小来防止此类攻击。更一般地说,像Snort这样的网络入侵检测工具的目标是在缺乏输入验证之类的事情被忽视的情况下进行广泛的检测和预防。