• SQL注入绕过safedog姿势及原理


    今天继续给大家介绍渗透测试相关知识,本文主要内容是SQL注入绕过safedog的姿势及原理。

    免责声明:
    本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
    再次强调:严禁对未授权设备进行渗透测试!

    一、绕过union select联合注入防御

    当我们面对安全狗的防护,想要对目标站点进行SQL注入的渗透测试时,会发现安全狗会拦截带有union select的字段,直接使用SQL传统的union联合注入,URL构造如下:

    http://192.168.136.7/sqli/Less-2/?id=-1 union select 1,2,3
    
    • 1

    则会遭到安全狗的拦截,如下所示:
    在这里插入图片描述
    经过多次尝试,使用如下的payload可以绕过安全狗的防御

    http://192.168.136.7/sqli/Less-2/?id=-1 union--+tctctc%0A select 1,2,3
    
    • 1

    上述url访问后页面如下所示:
    在这里插入图片描述
    为什么上述payload能够绕过安全狗的防御呢,让我们来仔细看一下上述payload中关键的部分:
    在union和select关键字中间,添加了如下内容:

    union--+tctctc%0A select
    
    • 1

    要理解上述payload,主要是理解为什么上述SQL语句能够成功执行,以及安全狗将上述SQL语句判定为什么。
    在上述payload中,–是注释符,在安全狗认为,–后面的所有内容均为注释,因此没有出现union和select的联合注入威胁,因此被绕过。
    而对于数据库而言,尽管–后面的内容被认为是注释,但是需要注意的是%0A在URL编码中是换行符的意思,即%0A后面的内容被换行,因此–注释的仅仅是tctctc这些我们故意构造的绕过安全狗的数据,因此上述SQL语句可以被数据库正常执行!

    二、绕过database数据库名查询的防御

    安全狗还会对查询database数据库的SQL语句进行防御,例如,如果我们访问如下的URL:

    http://192.168.136.7/sqli/Less-2/?id=-1 union--+tctctc%0A select 1,2,database()
    
    • 1

    那么会被安全狗所拦截,结果如下所示:
    在这里插入图片描述
    上述payload被拦截的原因,就是出现了database()关键字,那么我们如何绕过该关键字呢?
    我们可以利用MySQL数据库特性来绕过该限制,构造payload如下所示:

    http://192.168.136.7/sqli/Less-2/?id=-1 union--+tctctc%0A select 1,2,database/**/()
    
    • 1

    该pyaload与之前的payload不同之处在于,在database和括号之间插入了/**/,这在MySQL数据库中可以正常执行,但是在安全狗中认为分割了database(),因此被绕过,该payload执行结果如下所示:
    在这里插入图片描述
    原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 相关阅读:
    【RHCE-第五天作业】
    动态规划求集合的第二大值 java 实现
    程序员必须要懂的首字母大写规范
    新库上线 | CnOpenData 新三板公司专利及引用被引用数据
    利用地质年代图谱精准判读文献中的地质时间
    165-手表品牌浅看一下
    实现 ~ 按钮倒计时 ~ 表现
    日历应用程序 BusyCal mac中文版软件特点
    vue.js计算属性的基本使用
    发布Android库至MavenCentral详解
  • 原文地址:https://blog.csdn.net/weixin_40228200/article/details/126298462