渗透测试_缓冲区溢出

缓冲区溢出

程序漏洞从哪里来?

  • 罪恶的根源:变量

  • 数据与代码边界不清

  • 最简漏洞原理---- shell脚本漏洞

  • 大部分的漏洞是因为程序没有区判断用户输入的内容导致的

举例说明:

└─# cat a.sh
#!/bin/bash
echo $1


上面是一个很简单的脚本,意思就是这个脚本后面可以跟一个参数,该脚本返回这个参数。如下图所示:
在这里插入图片描述

但是这个脚本是有漏洞的,如果我们这样写,就会直接执行系统命令;注:除了;向&&、|等符号都可以;

什么是缓冲区溢出?

  • 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被"撑爆",从而覆盖了相邻内存区域的数据;
  • 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果;

如何发现漏洞

  • 代码审计
  • 逆向工程
  • 模糊测试
    • 向程序堆栈半随机的数据,根据内存变化判断溢出
    • 数据生成器:生成随机、半随机数据
    • 测试工具:识别溢出漏洞

注:

  • windows和Linux有安全机制:
    • DEP:阻止代码从数据页被执行
    • ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值