13-simple_php
<?php show_source(*__FILE__*);//高亮文件 include("config.php");//文件包含在内 $a=@$_GET['a'];//获得a $b=@$_GET['b'];//获得b if($a==0 and $a){ //判断a是否满足条件 echo $flag1; //满足就输出flag1 } if(is_numeric($b)){ //判断b的条件,b是不是数字 exit(); //b是数字就退出 } if($b>1234){ //判断b是不是大于1234 echo $flag2; //符合条件才能输出flag2 } ?>
解题-代码审计解释
明显的代码审计,代码包含了config.php的文件,想必 密码就在其中,我们需要输入a,b的值.
首先,a需要既等于0又需要$a为真才能输出flag
这时候这需要引入新的知识:(1)$a输入布尔值true,非空数组,非空字符串,非零数字则可使$a判断为真;(2)当逻辑运算符“==”进行判断时,左边的若为字符串(第一个字符不为数字)则会自动转化为数字0,同理左边是数组,则转化为0
所以要满足条件必须让$a!=空值,且不能为数字,同时满足==左边转化后为0
所以$a可以=“asjcn”(任意一个字符串(第一个字符不为数字)) 判断b是否为纯数字,如果b是纯数字就结束,最后是一个判断b是否大于1234,是就打印flag
a可以是abcd b不能是纯数字而且要大于1234(可以在数字后面加字母) 所以b可以=9999c 把a=abcd,b=9999c get进去
使用hackbar完成操作