打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CTF PHP代码审计 正则表达式 弱类型比较

一进来就是PHP正则表达式


这个比较难的地方在于正则表达式里面的符号代表什么含义,网上去找了下资料。

在有了上面那个的基础后就比较容易了,分段来说明。

if  ("POST" == $_SERVER['REQUEST_METHOD'])

需要用POST方式提交。

if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password))    {        echo 'Wrong Format';        exit;    }

这里只需要有连续12个以上的非控制字符就可以,比如空格tab等。

$reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';     if (6 > preg_match_all($reg, $password, $arr))            break;

这里有点难理解,这里指的是将$password分成连续的符号punct或者数字digit或者大写upper或者小写lower能分成6段以上即可。


这个函数也能分割出数组,只是有点小奇怪的是$arr这个变量没看到,可能是在flag.php里面有吧。。。
接着看下一段。

$ps = array('punct', 'digit', 'upper', 'lower');        foreach ($ps as $pt)        {            if (preg_match("/[[:$pt:]]+/", $password))                $c += 1;        }        if ($c < 3) break;

在密码里面至少要看到符号数字大写小写至少出现三种。

       if ("42"==intval($password)&&"42"!=$password) echo $flag;        else echo 'Wrong password';        exit;

这里就是典型的弱类型比较了,只要满足上面的要求即可,随便测试了下42.Hell0World!就可以了。



成功拿到flag,这里多说一下,不是非得用科学计数法才行,我看所有的writeup里面都写的42.0000000e+1这种。。。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
正则表达式提取img的src_正则表达式_脚本之家
PHP preg
php正则表达式1、2、3
php_正则表达式_欢欢和芳芳的天空
PHP 正则表达式
preg 函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服