本系列文集:实验吧-Write up --将持续更新 觉得还不错请给个喜欢,感谢!
打开题目发现PHP代码,明显的代码审计题!
<?php
if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
{//1.ereg()正则限制了password的形式,只能是一个或者多个数字、大小写字母
echo '<p>You password must be alphanumeric</p>';
}
else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
{ //2.长度小于8并且大小必须大于9999999
if (strpos ($_GET['password'], '*-*') !== FALSE)
{//3.password中必须含有*-*
die('Flag: ' . $flag);
}
else
{
echo('<p>*-* have not been found</p>');
}
}
else
{
echo '<p>Invalid password</p>';
}
ereg()漏洞:
ereg()函数存在%00截断漏洞,ereg读到的时候,就截止了
解析:
要想得到flag就要满足
1.ereg()正则限制了password的形式,只能是一个或者多个数字、大小写字母
2.长度小于8并且大小必须大于9999999
3.password中必须含有*-*
构造payload:password=1e8%00*-*
or 9e9%00*-*
在URL中提交,直接在显示框中提交%00会在url中改变
网友评论