代码审计

挖掘漏洞

  1. 关键字搜索:1搜变量,2搜函数关键字

工具

  1. fortify,批量化挖掘漏洞,静态挖掘漏洞,支持多种语言,做题先扫描一遍

    seay:

  2. 扫描关键字,
  3. 输入关键字之后点击全局搜索,
  4. 但是可能封装到一个类中了,
  5. 记住勾选正则和不区分大小写,
  6. 一定要看看哪一个语句是否有变量,没有变量就是写死了,没有办法控制变量,就没办法sql注入
  7. 乱码记得切换编码
  8. 由关键字搜索到具体函数,根据函数名右键全局搜索调用函数的位置
  9. 关键字搜索,使用全局搜索,搜索可控变量或者执行函数
  10. 搜索例如select update insert 等sql语句函数,看看是否有可控变量,没有可控变量就是死sql语句,无法进行sql注入
  11. 函数查询
  12. 找到具体函数之后,右键定位函数使用的位置

步骤

  1. 搜索select
  2. 找到变量
  3. 找到变量调用函数
  4. 右键定位函数调用位置
  5. 看看页面和数据库的互动,根据回显判断注入点

判断过滤机制

  1. 看配置文件,看配置文件的关键字,例如:fun、inc

漏洞产生的根本

  1. 可控变量
  2. 特定函数,决定漏洞类型
  3. 不存在过滤或过滤不严谨存在绕过导致的安全漏洞

定点挖掘关键字

可控变量

  1. 接受来的id参数将会传递给sql语句执行
    变量的接受
  2. 变量的接受方式:get post
  3. 接受关键字:$_GET $_POST

特定函数

输出
  1. print echo
    数据库操作

    搜索特定关键字尝试寻找特定漏洞

  2. 搜索echo print 尝试挖掘的就是xss漏洞
  3. 搜索$_GET $_POST 尝试挖掘的就是安全漏洞(可控变量)
  4. 搜索select insert update sql执行语句 == sql注入漏洞

定点挖掘功能点

  1. 我要挖掘文件上传,通过网站的浏览,发现文件上传的位置,例如会员中心,抓包分析找到源码中的特定文件代码段,进行文件上传代码分析挖掘。

拓展:视漏洞而定

  1. sql注入 数据库监控-监控到当前页面和数据库的交互过程(SQL执行语句)
  2. 断点调试:访问页面时对应代码进行断点调试(执行过程前后顺序,调用文件列表)