<?php
highlight_file('index.php');
include('flag.php');
if (isset ($_GET['password']))
{
# password必须只包含保护数字和字母
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
{
echo '<p>You password must be alphanumeric</p>';
}
else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
{
# 密码中必须包含*-*
if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos — 查找字符串首次出现的位置
{
die('Flag: ' . $flag);
}
else
{
echo('<p>*-* have not been found</p>');
}
}
else
{
echo '<p>Invalid password</p>';
}
}
?>
需要满足以下条件才能获取到flag
1、password必须只包含保护数字和字母,ereg正则且密码中要包含
*-*
2、密码长度小于8
3、密码的值要大于9999999
分析
1、利用ereg%00绕过的特性 aaaa%00- 绕过1
2、利用科学计数法绕过2和3,最终答案1e9%00- ,刚好%00传到后台被解析为1个字符,总共7个字符。1e9=1000000000,满足>9999999
其他:9999999设置的不够极限,还可以往后设置两位
?password=1e9%00*-*
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.