xctf中的Lottery(.git源码泄露)

该博客讲述了在XCTF竞赛中遇到的一道关于 Lottery 的题目,通过使用敏感文件泄露工具发现 .git 文件泄露,然后使用 githack 恢复源码进行审计。关键问题存在于 api.php 文件的一个函数,由于 PHP 的弱类型比较特性(如 true == [1-9]),允许通过传入特定数组值来绕过检查。作者根据题解发现并利用此漏洞,通过多次尝试获取足够的资金来购买 flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题先用敏感文件泄露工具扫到了.git文件泄露,于是用githack将文件还原进行代码审计。。。
漏洞处在api.php这个文件

function buy($req){
	require_registered();
	require_min_money(2);

	$money = $_SESSION['money'];
	$numbers = $req['numbers'];
	$win_numbers = random_win_nums();
	$same_count = 0;
	for($i=0; $i<7; $i++){
		if($numbers[$i] == $win_numbers[$i]){
			$same_count++;
		}
	}
	switch ($same_count) {
		case 2:
			$prize = 5;
			break;
		case 3:
			$prize = 20;
			break;
		case 4:
			$prize = 300;
			break;
		case 5:
			$prize = 1800;
			break;
		case 6:
			$prize = 200000;
			break;
		case 7:
			$prize = 5000000;
			break;
		default:
			$prize = 0;
			break;
	}
	$money += $prize - 2;
	$_SESSION['money'] = $money;
	response(['status'=>'ok','numbers'=>$numbers, 'win_numbers'=>$win_numbers, 'money'=>$money, 'prize'=>$prize]);
}

这个函数出了一点问题。。

当然我这么的菜,肯定是看题解写出来的,上网上一找,找到了苏老大的题解。。。。

自己一开始就专注于分析这个文件(通读代码),于是将用户的输入甩到一边去了。。。。

$numbers = $req['numbers'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值