WAF bypass学习(MySQL注入)

引号绕过

sql语句中对’或"做了限制不允许输入时,可以采取十六进制进行绕过
如:

select password from users where user="admin";

可以将admin进行十六进制转换,然后进行绕过

select password from users where user=0x61646D696E;

最后显示的结果相同
在这里插入图片描述

一、绕过目录扫描的防护

  1. 修改user-agent为搜索引擎的爬虫 百度爬虫:Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
  2. 减缓扫描速度
  3. 通过代理ip进行扫描

二、手工注入WAF bypass思路

  1. 大小写变换
    如:对某些关键字如:select、union、order、where进行关键字的过滤,可以采用SelEct、UniOn等大小写变换进行绕过。
  2. 使用嵌套
    如对某些关键字替换为空,可以采用嵌套双写进行绕过,如碰到select或者union等关键字时会将其替换为空,此时可以尝试SELEselectCT、UNIunionON进行绕过。
  3. 空字节
    一些过滤器在碰到空字节会停止过滤,如id=1 %00 and 1=1或id=1 an%00d 1=1,当WAF碰到id=1时将停止检测,从而绕过。
  4. 变换提交方式
    规则是对GET请求进行限制而未对POST请求限制可以尝试通过POST请求进行绕过。
  5. 使用SQL注释
    普通注释:
    内联注释:
    /**/可以用来代替空格
    /*!select*/使得select不被注释,table_name, table_schema, =, and information_schema同理均可以采用内联注释进行绕过
  6. 双重编码
    WAF会解码然后过滤关键字,此时通过二次编码进行绕过
  7. 更换where条件
    在这里插入图片描述
    如果拦截=可以尝试<>、>、<号
    <=>: 比较操作符,当比较的的两个值为 NULL 时返回 true。
  8. http 参数污染
    当get方式进行传参时,通过&符号传入多个参数,WAF可能只检测第一个参数的值,而后台却检测最后一个传入的值,此时可以绕过WAF的防御
    如:.php?id=1&id=2&id=select * from class
    在这里插入图片描述
    PHP/Apache会接收最后一个参数
    ASP/IIS会将每个参数拼在一起,如id=a&id=b 最后的值为ab
    ASP.NET/IIS也是将每个参数拼在一起
    JSP,Servlet/Apache Tomcat接收第一个参数

三、测试

环境:

DVWA1.9版本,safedogV4.0apche版

SQL注入测试:

SQL注入Low级别
在MySQL测试了一下条件,and/*1=1*/发现不报错拿到环境下测试
由于已知此级别存在字符型注入,学习bypass为主所以以下不进行字符型和数字型的判断。

  • 首先正常输入:
    在这里插入图片描述

  • 然后在1后加’
    在这里插入图片描述
    dog没有拦截,此处判断出了注入点

  • 继续加 and看看是否拦截
    在这里插入图片描述

  • 加and 1
    在这里插入图片描述

  • 被拦截,尝试/**/代替and和1之间的空格
    在这里插入图片描述

  • 依旧被拦截,现在尝试下内联注释and/*!1=1*/
    在这里插入图片描述

  • 发现不拦截了,此时在后边添加注释符
    在这里插入图片描述

  • 页面回显成功,测试and/*!1=2*/
    在这里插入图片描述

  • 信息查询不到,此时输入or/*!1=1*/
    在这里插入图片描述
    成功绕过

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web应用程序防火墙(WAF,Web Application Firewall)是一种网络安全设备或服务,用于检测和阻止针对Web应用的攻击,包括SQL注入等。SQL注入是攻击者通过恶意输入,将SQL代码插入到应用程序的数据库查询中,意图获取敏感信息或篡改数据。 WAF绕过SQL注入通常是攻击者针对WAF的安全策略和技术限制来实施的一种技术手段,常见的方法包括: 1. **参数编码和转义**: 攻击者可能会尝试使用特殊字符的转义序列,如\"\'(单引号)或\"\"(双引号),来欺骗WAF,使其误判为合法的输入。 2. **利用WAF规则漏洞**: 一些老旧或配置不当的WAF可能无法识别复杂的注入模式,攻击者会利用这些漏洞进行攻击。 3. **HTTP头部注入**: 攻击者可能会尝试将SQL注入嵌入到HTTP头部请求中,有些WAF可能只关注请求体而忽视头部。 4. **使用存储过程或动态SQL**: 通过调用服务器端已存在的存储过程,或者构造动态SQL,使攻击难以被WAF直接拦截。 5. **利用API或JSON Web Token (JWT)**: 如果攻击发生在API层面,攻击者可能会利用API的认证机制,将SQL注入隐藏在合法的API调用中。 6. **社会工程学攻击**: 通过利用用户信任或权限漏洞,让目标用户执行包含SQL注入的恶意操作。 要防止WAF绕过,应不断更新和强化WAF规则,同时采用多重防御策略,比如使用参数化查询、输入验证、异常处理和对用户输入的深度检查。此外,定期审计和安全测试也是防止此类攻击的重要手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值