代码如下
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("
not allowed!
");exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "<p>Access granted!</p>";
echo "<p>flag: *****************} </p>";
}
?>
<br><br>
Can you authenticate to this website?
上面这段php代码,对get方式提交的参数id进行了url解码再判断。然而只把字符串“hackerDJ”进行一次url编码,就只会输出not allowed,要进行2次url编码才可以,原因有的地方说是因为浏览器会对收到的数据进行一次url解码,所以要多编码一次。
于是问题来了,php代码是在浏览器中才被解析执行的吗?如果php代码是在服务端执行的,那么浏览器会对接收到的数据先进行一次url解码应该不会影响到php代码的执行吧....................这点疑问,求指点