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

相关推荐
Gauss松鼠会6 小时前
【GaussDB】破除gaussdb ugin索引支持中文模糊查询的迷思-字符序
java·运维·服务器·网络·数据库·gaussdb·经验总结
科技象限6 小时前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神
luiyarch6 小时前
汽车电子ISO 21448 SOTIF系列(第26期):未知危险场景的确认方法(下)——AI驱动的场景发现
网络·人工智能·安全·车载系统·汽车
砚凝霜6 小时前
【软考信息安全】第十六章 网络安全风险评估项目流程与应用
网络·安全·web安全
Mr_韩6 小时前
子网路由实战:无需公网 IP,异地直接访问家庭内网全部设备
运维·网络·物联网·nas
Bruce_Liuxiaowei6 小时前
内网“影子资产“:串口服务器安全盲区剖析
服务器·网络·安全·iot
Quanqiucard6 小时前
矿山安全管控升级,布控球机物联网卡成视频稳定回传关键
物联网·安全
看浪的路人7 小时前
第8讲:供应链安全与依赖管理
安全
云计算练习生7 小时前
什么是操作系统安全?身份认证、访问控制与审计机
服务器·网络·安全·访问控制·操作系统安全
乐橙开放平台7 小时前
通道国标 ID 贴反会串店:海康大华宇视摄像头怎么用 GB28181 统一接入?
网络·笔记·物联网·自动化·音视频·智能家居