• PHP代码审计学习(4)——SQL漏洞


    前言

      SQL注入原理之前已经研究过了,感兴趣的师傅可以去看一下SQL注入天书,这里不详细介绍了,简单讲一下再代码审计中容易出现的SQL注入类型,只是简单归纳一下书里的知识

    SQL注入位置

      登陆页面、获取HTTP头处理函数、订单处理、查询搜索,用户管理操作页面等,登陆页面大多发生在HTTP头的client-ip和x-forward-for,一般用于记录IP地址,在订单页面因为要和很多页面交互往往很复杂,也常常出现二次注入

    代码审计基本注入类型

      普通注入

        字符型 1' and '1' = '1'  、数字型 1 and 1=1

      宽字节注入

        PHP连接数据库时候,当设置 set character_set_chient=gbk 时候或当我们看到的变量有时会被addslashes函数过滤,会导致编码注入问题。如果数据库是用GBK编码处理参数的,我们可以在参数中带入%df%27 '或%df ',编码为%df%5c%27,%df%57会被认为是一个中文“運”,这样单引号之前的转义符号“”就被吃调了,变成了“運’”转义失败,mysql在解读时会无视新字节,使得我们的单引号 ' 生效。

        在SQLMAP加脚本参数,或者直接在后边加%df'直接跑

    --tamper unmagicquotes --dbs --hex

        设置SET NAMES 'gbk'也一样有漏洞出现,只是不过多干两步

    SET
    character_set_connection='gbk',
    character_set_results='gbk',
    character_set_client=gbk

      

        代码审计的时候查找关键字

          SET NAMES

          character_set_client=gbk

          mysql_set_charset('gbk')

      二次注入

        传入数据库再取出调用的情况下就可能会造成漏洞,现在web程序经常会使用addslashes(),mysql_real_escape_string(),mysql_escape_string()或开启GPC的方式转义特殊字符。如果某处使用了urldecode或rawurldecode,就有可能出现二次编码注入,比如我们提交?id=1%2527,第一次解码后是?id=1%27,因为%25解码后是%,然后1%27就存入了数据库,再调用解码的时候,1%27就变成了1',传入的时候没有单引号,调用的时候单引号就出现了引发注入

         在代码审计中我们就可以搜索urldecode或rawurldecode来查找有没有二次注入的漏洞

  • 相关阅读:
    ESXI | ESXI6.7如何在网页端添加用户并且赋予不同的权限 风行天下
    网页前端 风行天下
    Zabbix远程命令权限不足问题解决方法 风行天下
    CentOS 8时间同步 风行天下
    linux之mv命令排除某个文件或文件夹 风行天下
    zabbix已是运行状态但zabbix server is not running解决办法 风行天下
    centos7进入救援模式,修复错误配置 风行天下
    Centos7 rsync 实现文件同步 风行天下
    python基础之socket与socketserver 风行天下
    linux中命令cp复制拷贝访问权限和修改时间 风行天下
  • 原文地址:https://www.cnblogs.com/Lee-404/p/13088757.html
Copyright © 2020-2023  润新知