buy.PHP,加载了Js中的buy.Js
<script type="text/JavaScript" src="Js/buy.Js"></script>
buy.Js中发起对API.PHP的post请求,并且带上了我们输入的7位号码
function buy(){ $('#wait').show(); $('#result').hIDe(); var input = $('#numbers')[0]; if(input.valIDity.valID){ var numbers = input.value; $.AJAX({ method: "POST", url: "API.PHP", dataType: "Json", ContentType: "application/Json", data: JsON.stringify({ action: "buy", numbers: numbers }) }).done(function(resp){ if(resp.status == 'ok'){ show_result(resp); } else { alert(resp.msg); } }) } else { alert('invalID'); } $('#wait').hIDe();}
API.PHP:
function random_win_nums(){ $result = ''; for($i=0; $i<7; $i++){ $result .= random_num(); } return $result;}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]);}
1、通过random_win_nums()函数生成了中奖号码
2、中奖的判断代码:
for($i=0; $i<7; $i++){ if($numbers[$i] == $win_numbers[$i]){ $same_count++; } }
3、==和===的区别
这里使用的是 "==",在执行==之前需要让两边的数据类型必须一致,如果数据类型不一致,就会强制转换运算符右边的数据。
而在===中,如果两边的数据类型不一致则直接返回false。
4、==比较利用
这里我们就可以传入一个全为true的数组,那么只要生成的中奖号码中没有0的话就可以完全相同,然后得到prize去获取flag
示例:
<?PHP$number='3569456';$a=[(bool)$number[0], (bool)$number[1], (bool)$number[2], (bool)$number[3], (bool)$number[4], (bool)$number[5], (bool)$number[6]];var_dump($a);?>
结果:
array(7) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(true) [4]=> bool(true) [5]=> bool(true) [6]=> bool(true)}
@H_301_74@最后贴上一个松散比较的表格:
https://www.PHP.net/manual/zh/types.comparisons.PHP
以上是内存溢出为你收集整理的PHP-CTF-Docker /day4全部内容,希望文章能够帮你解决PHP-CTF-Docker /day4所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)