攻防世界,弱比较


点击链接看到题目:

```<?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;
}
?>

分析:
show_source一个高亮语法显示
include是一个获取指定文件中存在的所有文本/代码/标记,这个函数有文件包含漏洞。
GET我们联想到http有两种提交数据方式,一种是GET,一种是POST
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}代表着:当a==0或者本身可得到flag1,当b>1234的时候得到flag2

但是is_numeric会判断b是否为数字或字符,如果是则会不显示第二串flag

我们还需要知道PHP的比较类型
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果我们把a=27带入比较,10,这是会返回flase;所以数字不能成立,我们只能带入字符串,admin0,这是返回true
b我们只要绕过is_numeric函数就行,可以采用数字+字符串方式绕过。

得到flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

posted @ 2020-11-08 13:41  网抑云黑胶SVIP用户  阅读(164)  评论(0编辑  收藏  举报