题目:
查看源代码发现
注释:
<?php
error_reporting(0);
echo "<!--challenge3.txt-->";
require __DIR__.'/lib.php';
if(!$_GET['id'])//id为空进入
{
header('Location: challenge3.php?id=1');
exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))//stripos截取字符串为真进入(stripos截取$a有“.”的位置从0开始)
{
echo 'Hahahahahaha';
return ;
}
$data = @file_get_contents($a,'r');//读取文件内容存放在$data变量下
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
echo $flag;
}
else
{
print "work harder!harder!harder!";
}
?>
答案:
解析:
本题的重点在于substr截取字符串可以被%00截断绕过但是strlen不会,和php伪协议的利用,字符串和整型对比的转换。