第八章:security testing

本文详细介绍了安全测试,特别是缓冲区溢出和模糊测试(Fuzzing)。缓冲区溢出是常见的安全漏洞,可能导致恶意代码执行。模糊测试分为随机测试、基于突变的模糊测试和基于生成的模糊测试,每种都有其优缺点。文章还探讨了内存调试器在检测内存问题中的作用以及未定义行为对程序安全性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Security Testing

  • 渗透测试(或称为pentesting)是指攻击软件以寻找安全漏洞的过程。
  • 自动化渗透测试,通常被称为 fuzzing test,是一种系统性 systematic 和可重复的 repeatable 渗透测试方法,许多优秀的渗透测试人员都在使用。
  • 漏洞是系统中硬件或软件(包括操作系统)中存在的安全隐患,可能导致对该系统进行攻击,例如未经授权访问。漏洞可以是容易猜测的弱密码、允许访问运行进程外存储器的缓冲区溢出,或提供对数据库中数据未经授权访问的未转义SQL命令
    在这里插入图片描述
  • 如果上述命令被不小心写成下面这样:
    在这里插入图片描述
  • 这样会可以访问所有的数据

buffer overflow 的例子

在这里插入图片描述

  • 情况 1: 描述的是当输入字符串(例如 “hello\0”)足够小,可以完全放进 c 数组时,程序的正常运行状态。在这种情况下,不会发生溢出。
  • 情况 2: 描述的是当输入字符串(例如 “AA…[溢出的数据]…”)过长,超出了 c 数组的边界时,它会覆盖调用函数 foo 的栈帧指针 (stack frame pointer) 和 返回地址 (return address spot)。特别是,这个示例中使用了一系列的 ‘A’ 字符后跟一些编码字符(可能是示意攻击者通过特殊字符控制程序),这可能导致程序的执行跳转到攻击者控制的代码 (This may cause the program to jump to code controlled by the attacker.)

Fuzzing 测试

在这里插入图片描述

  • 本质是一种渗透测试

  • 目的是定位那些可能出现的 vulnerabilities
    在这里插入图片描述

  • fuzzing 测试的三种技术

    • random testing 从指定的分布中随机生成的测试。
    • Mutation-based fuzzing: 从一个良好形式的输入开始,并随机修改(突变)其中的部分。
    • Generation-based fuzzing: 使用输入数据的某些规范,比如输入数据的语法。

Random Testing

在这里插入图片描述

  • random testing 通过从一个分布中随机挑选来产生大量的测试用例
好处
  • 便宜,简单就能产生大量的随机测试用例
  • 它是 unbiased ,不像由人类选择的测试。这对于渗透测试很有用,因为在编程过程中被忽略的情况通常是由于缺乏人类理解而造成的,并且随
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值