第八章:security testing

文章目录

  • Security Testing
    • buffer overflow 的例子
    • Fuzzing 测试
      • Random Testing
        • 好处
        • 坏处
      • Mutation-based Fuzzing
        • 好处
        • 坏处
      • Generation-based Fuzzing
        • 好处
        • 坏处
    • Memory Debugger
    • Undefined Behaviors (未定义行为)

Security Testing

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

buffer overflow 的例子

第八章:security testing_第1张图片

  • 情况 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 测试

你可能感兴趣的:(软件工程学习内容,testing)