微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bugku数字验证绕过正则

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

 

 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,$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 ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐