盒子
盒子
文章目录
  1. Ⅰ、shellcode
    1. ① 定义
    2. ② 功能
  2. Ⅱ、exploit
  3. Ⅲ、shellcode 与 exploit

shellcode 与 exploit

对于刚开始学习缓冲区溢出的同学来讲,很容易混淆 shellcode、payload、exploit这些专有名词,本文详细分析了两者之间的关系。

Ⅰ、shellcode

① 定义

shellcode:缓冲区溢出攻击中植入进程的代码

② 功能

  • 可以是处于恶作剧弹出对话框
  • 可能是攻击性的,删除重要文件、窃取数据、上传木马病毒并运行
  • 出于破坏的,格式化磁盘

shellcode 不局限于用于获取 shell 的代码,是广义上的植入进程中的代码。

shellcode 通常用汇编语言编写,并转换成二进制机器码,其内容和长度经常受到限制,开发和调试难度高。

Ⅱ、exploit

植入代码之前需要做大量工作,例如,弄清程序有几个输入点,这些输入将最终会当做哪个函数的第几个参数读入到内存的哪一个区域,哪一个输入会造成栈溢出,在复制到栈区的时候对这些数据有没有额外的限制等。调试之后还要计算函数返回地址距离缓冲区距离的偏移并淹没,选择指令的地址,最终制作出一个有攻击效果的“承载”着 shellcode 的输入字符串。
这个代码植入的过程就是漏洞利用,也就是 exploit。

exploit 一般以一段代码的形式出现,用于生成攻击性的网络数据包或其他形式的攻击性输入。exploit 的核心是淹没返回地址,劫持进程的控制权,之后跳转去执行shellcode。exploit 一般是针对特定漏洞而言的。

Ⅲ、shellcode 与 exploit

漏洞利用过程就好像一枚导弹飞向目标的过程。
导弹的设计者关注的是怎样计算飞行路线,锁定目标,最终把弹头精确地运载到目的地并引爆,而不关心所承载的弹头到底是用来在地上砸一个坑的铅球,还是用来毁灭一个国家的核弹头。

这就如同 exploit 关心的是怎样淹没返回地址,获得进程的控制权,把 EIP 传递给 shellcode 让其得到执行并发挥作用,而不关心 shellcode 到底是弹出一个消息框的恶作剧,还是用于格式化对方硬盘的穷凶极恶的代码。

支持一下
走过的,路过的,请支持一下我 n(*≧▽≦*)n