攻防世界web进阶区lottery详解

攻防世界web进阶区lottery详解

题目

在这里插入图片描述

详解

在这里插入图片描述
我们扫了一遍,注册处也没有什么问题
然后发现了,robots下有一个/.git/
很明显提示了我们git源码泄露
那么我们使用githack
https://github.com/lijiejie/GitHack

当然我们在使用git之前,必须安装git,否则就会出现这种问题
在这里插入图片描述
在这里插入图片描述
源码下载完成以后,

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

function flag($req){
	global $flag;
	global $flag_price;

	require_registered();
	$money = $_SESSION['money'];
	if($money < $flag_price){
		response_error('you don\' have enough money');
	} else {
		$money -= $flag_price;
		$_SESSION['money'] = $money;
		$msg = 'Here is your flag: ' . $flag;
		response(['status'=>'ok','msg'=>$msg, 'money'=>$money]);
	}
}

在api。php中我们查看这两个函数
buy和flag

  if($numbers[$i] == $win_numbers[$i]){ 			$same_count++; 		}

他这儿是两个等于号
是一个弱类型的等于
php弱类型,强类型判断见这里
https://www.cnblogs.com/Mrsm1th/p/6745532.html

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

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
在这里插入图片描述
抓包进行修改,因为1和true相等,
那么我们多写几个true
就可以进行购买flag了
修改后
{“action”:“buy”,“numbers”:[true,true,true,true,true,true,true]}
代码中是7,弱类型,一位一位比较,七个true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值