5.攻防世界simple_php

打开题目页面如下

看到是PHP代码,进行代码审计

php 复制代码
<?php
// 显示当前 PHP 文件的源代码
show_source(__FILE__);
// 从 HTTP GET 请求中获取名为 'a' 的参数的值,并将其赋值给变量 $a。
// @ 符号是错误抑制符,它会抑制可能出现的未定义索引警告,即如果请求中没有 'a' 参数,不会显示警告信息
$a = @$_GET['a'];
// 从 HTTP GET 请求中获取名为 'b' 的参数的值,并将其赋值给变量 $b
// 同样,@ 符号用于抑制可能出现的未定义索引警告
$b = @$_GET['b'];
// 检查变量 $a 是否等于 0 并且 $a 的值在布尔上下文中被视为真。
// 在 PHP 中,一些值(如空字符串、0、空数组等)在布尔上下文中被视为假。
if ($a == 0 and $a) {
    // 如果条件满足,输出变量 $flag1 的值。
    // 这个变量应该是在 "config.php" 文件中定义的。
    echo $flag1;
}

// 检查变量 $b 是否为数字或可以转换为数字的字符串。
// is_numeric() 函数会返回 true 如果变量是数字或者是可以转换为数字的字符串。
if (is_numeric($b)) {
    // 如果 $b 是数字,终止当前脚本的执行。
    exit();
}

// 检查变量 $b 是否大于 1234。
if ($b > 1234) {
    // 如果条件满足,输出变量 $flag2 的值。
    // 这个变量也应该是在 "config.php" 文件中定义的。
    echo $flag2;
}
?>

条件 a == 0 and a:

在 PHP 中,a == 0 会检查 a 的值是否等于 0,而 a 在布尔上下文中会被转换为布尔值进行判断。要同时满足 a == 0 和 a 在布尔上下文中为真,这看起来是矛盾的,但由于 PHP 的弱类型特性,可以通过传入特定的值来绕过。可以传入 a=0e123,在 PHP 的弱类型比较中,0e123 会被当作科学计数法的数字,其值为 0,但在布尔上下文中,它被视为真,从而满足条件输出 flag1。
条件 is_numeric(b) 和 b > 1234:

is_numeric() 函数用于检查变量是否为数字或可转换为数字的字符串。然而,攻击者可以利用 PHP 的类型转换特性绕过这个检查。例如,传入 b=1235a,is_numeric('1235a') 会返回 false,因为它不是一个纯粹的数字,但在比较 b \> 1234 时,PHP 会尝试将 b 转换为数字进行比较,1235a 会被转换为 1235,从而满足 b \> 1234 的条件,输出 flag2。

方法一:

分别满足条件传参

可知利用get传参,令$a等于0

得到了一半的flag

Cyberpeace{647E37C7627CC3E401

再利用第二个条件构造$b

得到另一半flag 9EC69324F66C7C}

组合最终得到flagCyberpeace{647E37C7627CC3E4019EC69324F66C7C}

方法二:

满足全部条件一块得到全部flag

由于在 PHP 中,a == 0 会检查 a 的值是否等于 0,而 a 在布尔上下文中会被转换为布尔值进行判断。要同时满足 a == 0 和 $a 在布尔上下文中为真,这看起来是矛盾的,但由于 PHP 的弱类型特性,可以通过传入特定的值来绕过。可以传入 a=0abc

最终得到flag

相关推荐
EasyDSS32 分钟前
国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
网络·人工智能
玩转4G物联网34 分钟前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
派阿喵搞电子1 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络
网安INF1 小时前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
lubiii_1 小时前
墨者学院-密码学实训隐写术第二题
web安全·网络安全·密码学
搬码临时工2 小时前
外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接
服务器·网络·智能路由器
moongoblin2 小时前
行业赋能篇-2-能源行业安全运维升级
运维·安全·协作
Fortinet_CHINA2 小时前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
网络·安全
dustcell.3 小时前
Cisco Packer Tracer 综合实验
网络
这儿有一堆花3 小时前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全