【安全】正则回溯绕过练习简单案例

目录

环境

案例1

前要

代码审计 

分析 

案例2 

代码审计

分析

payload


环境

        phpstudy

案例1

      前要

        php中0 1 -1 true false null 空字符 数组之间的比较 

【安全】正则回溯绕过练习简单案例_第1张图片

      代码审计 

 strpos函数官方文档提示:

        经过实验,如果字符串位置放数组返回的实际是null

     分析 

         ①正则要匹配不上才能进第一个if        

         ②第二个if又要求greeting中含有Merry Christmas

         ③跳出第二个的思想,根据官方文档提示如果返回的是null的话

         ④null !== false能返回true是因为!==参考的是严格比较=== (!=参考的==)

        payload

greeting[]=

【安全】正则回溯绕过练习简单案例_第2张图片

案例2 

     代码审计

     分析

        ①不能匹配到MC的同时又要匹配到MC才能拿到flag

        ②正则回溯吐字符100w次就会返回false(目的是防止ddos)这样第一个if就能过去了,第二个只要里面存在MC也能进,那就构造存在MC的然后又会回溯100w次以上的

        

     payload

from requests import post

payload = {
    'greeting': 'Merry Christmas' +'x'*1000000
}
res = post('http://localhost:8081/demo4.php', data=payload)
print(res.text)

【安全】正则回溯绕过练习简单案例_第3张图片

注:图中所标版本复现失败,我以为是php版本高了,结果下面那个8.的复现成功了实属离奇

你可能感兴趣的:(安全,前端,php,正则表达式)