| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> SQL注入_WAF绕过(一)环境准备、更改提交方式、大小写、加密解密、编码解码、双写绕过、换行、注释符内联注释符绕过、同义词绕过、HTTP参数污染 -> 正文阅读 |
|
[PHP知识库]SQL注入_WAF绕过(一)环境准备、更改提交方式、大小写、加密解密、编码解码、双写绕过、换行、注释符内联注释符绕过、同义词绕过、HTTP参数污染 |
一、WAF拦截原理WAF从规则库中匹配敏感字符进行拦截 二、WAF绕过方式简单概览三、练习WAF绕过_环境准备在虚拟机中布置好sqli-labs(搭建在phpstudy中),下载并且安装好下面的安装狗: 打开sqli-labs靶场,以less2这一关为例: 如果看到这样的界面,就说明师傅的环境已经准备好了——安全狗可以有效的拦截,后面的靶场可以进行WAF绕过 的练习了。 对于安装安全狗有困惑的师傅可以看我写的这篇文章: 注意,修改了安全狗中的配置之后,一定要重新启动小皮面板中的apache服务才能生效。 四、WAF绕过方式_方式(1)更改提交方式比如刚才 的第二关,是GET类型的注入,但是可不可以通过POST或者其他方式进行绕过呢? 在GET方式下: 但是用POST方法: 发现其实可以绕过,但是没有数据的查询结果: 这是因为源码中,要求了GET方式提交数据:
如果源码中允许更多的提交方式,但是只对GET进行and拦截,那么改变提交方式就可以。当然现在实战中这种情况肯定不多见。因为免费的安全狗都能做到这种防护,更别说收费的安全产品了。 现在如果修改源码变成: 再尝试用POST进行提交: 这就是一种绕过方法,当然如果服务器后台写死了是$_GET方式提交数据,这种方法就是行不通的。 五、WAF绕过方式_数据(1)大小写关键字大小写绕过: 比如:
比如Less2: 然后尝试利用GET提交方式进行 And 的绕过: 发现无法绕过。 其实说真的,大小写绕过已经非常过时了,出现时间也很早。一般情况下,大小写绕过成功的应该很罕见吧。。。 再比如: 发现又被拦截了,于是先判断是对什么进行了拦截: http://172.16.135.186/sqli/Less-2/?id=-1 select
尝试大小写绕过:
大小写绕过已经过时了。。。。但是会被经常提到。。。 六、WAF绕过方式_数据(2)加密解密、编码解码编码绕过:针对WAF过滤的字符编码,如使用URL编码,Unicode编码,十六进制编码,Hex编码等
这种方法各种编码都可以试试,但未必可以。 http://172.16.135.186/sqli/Less-2/?id=1 %61%6e%64%20%31%3d%31%20%2d%2d%2b
(2)unicode编码: 但是数据没有查询到,所以未必对吧 (3)几种编码综合绕过: 也不行,这种方法可能在这种安全狗下做的防护比较严格吧 七、WAF绕过方式_数据(3)双写绕过部分WAF只对字符串识别一次,删除敏感字段并拼接剩余语句,这时,我们可以通过双写来进行绕过。 http://172.16.135.186/sqli/Less-2/?id=1 uniunionon seselectlect 1,2,3 --+ (这种方法可以结合大小写混写来进行绕过) http://172.16.135.186/sqli/Less-2/?id=1 UniuniONon sesELectlECt 1,2,3 --+ 七、WAF绕过方式_数据(4)换行、注释符内联注释符绕过换行和内联注释符绕过经常一起使用。 先来看内联注释符绕过: 基于sqli-labs的less2,为了使绕过union select变得更加简单,现在将源码中的请求方式改为REQUEST: 首先把GET的union select绕过了 有时候我们会用这样的形式进行绕过:
这里面/**/是内联注释符,会被当作注释使用,所以这样写安全狗可能就不会对注释里面的内容进行拦截,直接放行,利用这个特点就可以进行绕过。而“!”是为了在绕过安全狗之后,我们还可以让数据库服务器执行内联注释符里面的内容。 比如现在拿CMD直接写SQL语句试试内联注释符 : 这就是内联注释符的魅力。 现在将less的源码改为$_GET提交方式: 下面的语句会被拦截:
现在尝试绕过:
现在尝试查数据库名,思考一下这一次还有必要在database和()之间加/**/吗?
爆表名:
爆字段 这里连and都不用绕过,是不是很爽!
爆数据:
如果手动注入脸熟的师傅,这个过程在做的时候不要太开心!!!太流畅了,根本不会碰到拦截!! 这就是
这个绕过的魅力 但是为什么呢? 来看
能够绕过的原因:
/**/是注释,可以直接去掉吧,那么就变成:
然后看到
安全狗就会把他当作注释直接放行,而在数据库服务器中会执行“!”之后的内容:
这时候又碰到–+又是注释 但是要注意%0a相当于换行,那么这整个就变成:
那就是换行的查询啦! 就可以成功绕过了。 再来说说order by 的绕过: 可以看到在一开始猜测字段数的时候:
也就是在order 和by之间加入:
就可以绕过了: 八、WAF绕过方式_数据(5)同义词绕过比如and —> &或者&&
尝试用&进行绕过:
显然这里安全狗拦截的很好。同义词绕过只是一个思路,不可行很正常。 九、WAF绕过方式_数据(5)HTTP参数污染首先先来看一种情况: 我将test.php内容准备如下:
现在访问: 这就是一些服务器端的脚本语言的一些HTTP同名参数传的多的情况下的获取到的参数情况。 利用这中HTTP参数的污染,也是WAF绕过的一种思路。 比如:
是不是绕过的也不错?哈哈哈哈
以上是部分WAF绕过的思路。当然还有很多,往后几篇博文会介绍。如果您觉得讲的不错的话,就点个赞或者收藏一下?😊 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 7:08:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |