XCTF-高手进阶区:lottery

题目:
在这里插入图片描述
该题存在git泄露,使用GitHack.py进行扫描
在这里插入图片描述
在这里插入图片描述
最后定位在api.php中的buy函数存在漏洞
源码:

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]);
}

因为buy函数中比较使用了==(弱类型),注意,在使用==比较时,true是可以和任何类型的字符串或数字相等,返回true,当然0和false除外(true==0或true==false)
因此,我们可以传入七位全是true的数组或字典
在这里插入图片描述

在这里插入图片描述
多Go几次,之后就去购买flag吧

发布了135 篇原创文章 · 获赞 51 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_41617034/article/details/104609105