[CTF/网络安全] 攻防世界 lottery 解题详析

[CTF/网络安全] 攻防世界 lottery 解题详析

姿势

使用AWVS扫一遍该应用程序,扫描出git泄露

AWVS(Acunetix Web Vulnerability Scanner)是一款著名的网络安全扫描工具,旨在识别和评估Web应用程序中存在的安全漏洞和弱点。

在这里插入图片描述

故使用githack获取目录结构源代码

详情参考:[Python/网络安全] Git漏洞之Githack工具基本安装及使用详析

在这里插入图片描述

发现关键语句:

在这里插入图片描述
代码审计:

使用for循环遍历数字数组numbers,循环变量i从0到6,共7次循环。

在循环体中,使用if语句判断当前索引位置上的数字是否等于中奖数字数组$win_numbers中对应索引位置上的数字。如果相等,则将same_count变量加1。

使用switch语句根据$same_count的值进行不同的处理:

如果$same_count等于2,将$prize设为5。

如果$same_count等于3,将$prize设为20。

如果$same_count等于4,将$prize设为300。

如果$same_count等于5,将$prize设为1800。

如果$same_count等于6,将$prize设为200000。

如果$same_count等于7,将$prize设为5000000。

根据题目描述,我们必须拥有5000000才能购买flag

接着就涉及到php弱比较的知识点

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较

在进行比较的时候,会先将字符串类型转化成相同,再比较

举个例子:

$num1 = 5;
$num2 = '5';

// 弱比较 (==)
if ($num1 == $num2) {
    
    
    echo "弱比较:\$num1 和 \$num2 相等\n";
} else {
    
    
    echo "弱比较:\$num1 和 \$num2 不相等\n";
}

// 严格比较 (===)
if ($num1 === $num2) {
    
    
    echo "严格比较:\$num1 和 \$num2 相等\n";
} else {
    
    
    echo "严格比较:\$num1 和 \$num2 不相等\n";
}

输出结果:

弱比较:$num1 和 $num2 相等
严格比较:$num1 和 $num2 不相等

在弱比较(==)中,PHP首先会尝试将两个操作数转换为相同类型,然后再比较它们的值。在这种情况下,字符串’5’被转换为整数5,因此$num1$num2被认为是相等的。

而在严格比较(===)中,不仅要比较两个值是否相等,还要比较它们的类型是否相同。由于$num1是整数类型,而$num2是字符串类型,因此它们的类型不同,严格比较的结果是不相等。

因此我们可以利用弱比较这个点,抓包后修改判断表达式

在这里插入图片描述
在这里插入图片描述

修改为:

{
    
    "action":"buy",
"numbers":[true,true,true,true,true,true,true]}

点击放行后金额增加:

在这里插入图片描述
点击buy

在这里插入图片描述


总结

以上为[CTF/网络安全] 攻防世界 lottery 解题详析,读者可躬身掌握。

我是秋说,我们下次见。

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/131752048
今日推荐