• bugku数字验证绕过正则


    题目:http://120.24.86.145:9009/21.php

    第6行使用正则匹配如果匹配到$password开头12个字符中有空格则输出flag并执行exit;

    12行是正则匹配$password里的字符是否大于6,如果小于则echo hello world然后break所以一定要大于6才行。

    19-28行是表示要将$password里使用正则匹配,满足达到3次或三次以上(也就是说$password里要有满足正则的三个要求)

    最终的还要求$password等于42

     1 <?php
     2 error_reporting(0);
     3 $flag = 'flag{test}';
     4 if ("POST" == $_SERVER['REQUEST_METHOD']) {
     5     $password = $_POST['password'];
     6     if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password)) //preg_match — 执行一个正则表达式匹配
     7     {
     8         echo 'flag';
     9         exit;
    10     }
    11     while (TRUE) {
    12         $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';
    13         if (6 > preg_match_all($reg, $password, $arr)){
    14             echo "hello world";
    15             break;
    16         }
    17         echo preg_match_all($reg, $password, $arr);
    18         $c = 0;
    19         $ps = array(
    20             'punct',
    21             'digit',
    22             'upper',
    23             'lower'
    24         ); //[[:punct:]] 任何标点符号 [[:digit:]] 任何数字 [[:upper:]] 任何大写字母 [[:lower:]] 任何小写字母
    25         foreach ($ps as $pt) {
    26             if (preg_match("/[[:$pt:]]+/", $password)) $c+= 1;
    27         }
    28         if ($c < 3) break;
    29         //>=3,必须包含四种类型三种与三种以上
    30         if ("42" == $password) echo $flag;
    31         else echo 'Wrong password';
    32         exit;
    33     }
    34 }
    35 ?>

    第一个问题倒是很简单,只需要长度不小于12位即可。

    第二个/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/这个正则满足6次或以上。 

    满足其中1个+1,如果单纯的1个是不会+1的,比如1111111这样不会加1

    但是1,1,1这样就会加了。

    最终的payload:

    POST:

      password=42.000000000000e-0

  • 相关阅读:
    Centos7 keepalived 修改日志路径
    mysql 双主复制 centos7
    CentOs 7 安装mysql5.7.18(二进制版本)
    oracle、mysql新增字段,字段存在则不处理
    mysql+ibatis 批量插入
    oracle+ibatis 批量插入-支持序列自增
    oracle 批量插入-支持序列自增
    sftp上传
    java
    mysql
  • 原文地址:https://www.cnblogs.com/nul1/p/9343091.html
Copyright © 2020-2023  润新知