姿势
使用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 解题详析,读者可躬身掌握。
我是秋说,我们下次见。