0x01
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("not allowed!");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "Access granted!";
echo "flag";
}
?>
eregi()
定义:
- 不区分大小写大正则表达式匹配
语法:eregi(pattern,string)
- pattern,必需,正则表达式
- string,必需,要匹配的字符串
0x02 代码分析
传入的id值,不能等于hackerDJ
传入的id值再经过urldecode解码
如果此时,id值等于hackerDJ
输出flag
对传入的id值进行url两次编码,一次是用于浏览器正常解码,另一次用于代码中解码。
payload
http://123.206.87.240:9009/10.php?id=%2568ackerDJ
%2568ackerDJ解码为%68ackerDJ
绕过第一个判断
%68ackerDJ解码为hackerDJ
绕过第二个判断
得到flag