攻防世界:web区 Simple_PHP

这道题考察的是PHP的代码审计中的弱类型比较

== 就是先将二者变成相同的类型,然后再进行比较,即比较值

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?> 

所以直接再url框里面输入:http://111.200.241.244:58705/?a='0’就可以让第一段代码为true。再尝试发现,a=“dudhf”,即任意字符串都可以,那么说明,这个弱比较,只比较类型

第二段代码的is_numeric()函数是判断是不是数字或者数字字符,所以b里面不能使用数字直接比大小,因为是若类型比较,可以输入"1234b"这种字符串

http://111.200.241.244:58705/?a=%27aaa%27&b=1236a

b可以是1234a、1235a,但不能前面的数字比1234小!

posted @ 2021-08-13 21:52  Zeker62  阅读(36)  评论(0编辑  收藏  举报