栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python之路~~~~~正则表达式绕waf案例分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python之路~~~~~正则表达式绕waf案例分析

正则表达式

正则表达式:断言

断言又有很多中叫法,比如环视,巡视。断言一共又分4种:
xy XZ xa

x(?=y) 匹配'x'仅仅当'x'后面跟着'y' .这种叫做先行肯定断言。
(?<=y)x 匹配'x'仅仅当'x'前面是'y' .这种叫做后行肯定断言。
x(?!y)仅仅当'x'后面不跟着'y'时匹配‘x',这被称为先行否定断言。
也可以翻译成y前面不跟着x匹配成功
(? 

断言的使用:

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&*(.\)])(?=^.{5,7}$)

去匹配数字字母大小写特殊符号,并限制长度为5到7位

输入四位匹配不到

输入7位匹配到

正则表达式绕waf案例

案例分析(一)

首先我们要保证sql注入时from不是一个单词,其次它的语法不能报错,这样才有可能绕过

我们可以用科学记数法的方式绕过

select username,1e1from users;

http://192.168.17.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(username,0x3a,password),1e1from users),3--+
http://192.168.17.130/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username,0x3a,password),1e1from users--+
案例分析(二) 贪婪匹配

属于贪婪模式的量词,也叫做匹配优先量词,包括:{m,n},{m,},?,* 和 + 。

惰性匹配

在匹配优先量词后加上?,即变成属于惰性匹配的量词,也叫做忽略优先量词,包括:{m,n}?,{m,}?,??,*? 和 +? 。

回溯

当前前面分支/重复匹配成功后,没有多余的文本可被正则后半部分匹配时,会产生回溯

用一个简单的例子来解释一下贪婪匹配和惰性匹配!

贪婪 : /d+b/

惰性 : /d+?b/

文本 : 1234a

贪婪正则匹配 1234a 时的过程是这样的:

1. d+ 匹配得到 1234
2. b  却匹配失败(b 是分词边界匹配,用来获取位置,而不是文本,上一节有讲到)
4. 这个时候,d+会尝试回吐一个字符,即匹配结果为 123 ,可b还是匹配失败!
5. 那就继续回吐,一直到 1,还是匹配失败,那么这个正则就整体匹配失败了
6. 这个回吐匹配结果的过程就是回溯

惰性正则匹配 1234a 时的过程是这样的:

1. d+? 首先匹配,结果是1 ,紧接着 b 匹配失败
2. 那就 d+? 继续匹配,结果是 12 ,紧接着 b 还是匹配失败
3. d+? 一直匹配到1234,紧接着的 b 依然匹配失败
4. 结果整个正则匹配不成功

通过这两个例子的比较,相信你会猜到回溯会影响匹配速度,回溯的过程慢那是相对那些DFA引擎。

而JS的正则引擎是NFA(非确定型有限自动机),匹配慢,编译快。

而PHP是有限制回溯次数的,中文10w,英文100w

这样可以写一个脚本生成100w字符,php一句话上传上去即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号