[原理]
php中有两种比较符号
=== 会同时比较字符串的值和类型
== 会先将字符串换成相同类型,再作比较,属于弱类型比较
[目地]
掌握php的弱类型比较
[步骤]
1.打开页面,进行代码审计,发现同时满足 $a==0 和 $a 时,显示flag1。
2.php中的弱类型比较会使’abc’ == 0为真,所以输入a=abc时,可得到flag1。(abc可换成任意字符)。
3.is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE,且php中弱类型比较时,会使(‘1234a’ == 1234)为真,所以当输入a=abc&b=1235a,可得到flag2.
什么是php弱类型比较:
PHP的弱类型比较是其语言特性中极具争议但又充满技巧性的部分。这种特性在开发中既可能带来便利,也可能引发隐蔽的安全漏洞。
弱类型比较的核心机制
PHP的弱类型比较(==)在运算时会自动进行类型转换,其核心规则可归纳为:
1. 数值优先原则
当比较涉及数字时,字符串会尝试转换为数值。例如:
var_dump('0' == 0); // true(字符串转数字0)
var_dump('0a' == 0); // true(从首字符转换)
var_dump('abc' == 0); // true(无法转换则视为0)
2. 布尔值的特殊转换
true和false在比较中会被转换为1和0:
var_dump(true == 1); // true
var_dump(false == ''); // true(空字符串转0)
3. 数组与标量的比较
非空数组与标量比较时总返回false,空数组则等价于false:
var_dump([] == 0); // true(空数组转0)
var_dump(== 0); // false
本题考察对于php弱类型的比较方法掌握以及原理运用
1.开启环境,点击http://61.147.171.105:65035/进入环境

2.进入后,发现以下页面,很显然是代码审计题型

源码:
<?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;
}
?>
3.根据源码审计得出:
①GET请求访问与config.php文件
show_source(__FILE__);
include("config.php"); //插入了config.php文件
$a=@$_GET['a']; //变量a,b均需要使用GET请求传参
$b=@$_GET['b'];
②获取flag1的值
if($a==0 and $a){
echo $flag1;
}
当$a为0(整数或字符串"0")时,$a==0为true,但$a作为布尔值时为false,因此条件整体为false。
攻击示例:
?a=0 → $a==0为true,但$a布尔值为false → 条件不成立。
?a="" → $a==0为true,但$a布尔值为false → 条件不成立。
③获取flag2的值
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
is_numeric()函数会返回true对科学计数法(如1e3)、十六进制(如0x1000)等非预期输入,当返回为ture时,exit()阻止此类输入。且$b>1234才会触发显示flag2
4.构造payload
①变量a的payload构造讲解
利用弱类型比较的原理机制:
当出现以下情况时,弱类型比较便会将其转换为0,且同时满足a不为空
a=a、b、c、d等大小写字母
a=""
a=a123、b123、c666等以字母开头的混合值
a=0abd、0is等以0开头的混合值
②变量b的payload构造讲解:
利用is_numeric()函数的处理机制,仅当输入为字符串或数字时才会返回true:
当出现以下情况时,满足条件获取flag2且不会终止程序
b=1235abc、1236chs、1999sji等数字大于1234且与字母混合的值
5.构造payload访问flag1与flag2
http://61.147.171.105:65035/?a=0e123&b=1235abc

6.访问后出现了flag
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

版权声明与原创承诺
本文所有文字、实验方法及技术分析均为 本人原创作品,受《中华人民共和国著作权法》保护。未经本人书面授权,禁止任何形式的转载、摘编或商业化使用。
道德与法律约束
文中涉及的网络安全技术研究均遵循 合法合规原则:
1️⃣ 所有渗透测试仅针对 本地授权靶机环境
2️⃣ 技术演示均在 获得书面授权的模拟平台 完成
3️⃣ 坚决抵制任何未授权渗透行为
技术资料获取
如需完整实验代码、工具配置详解及靶机搭建指南:
请关注微信公众号 「零日破晓」
后台回复关键词 【博客资源】 获取独家技术文档包
法律追责提示
对于任何:
✖️ 盗用文章内容
✖️ 未授权转载
✖️ 恶意篡改原创声明
本人保留法律追究权利。
1447

被折叠的 条评论
为什么被折叠?



