題目


目標
- git 泄露 原始碼審計
- php 弱型別
環境
- 無
工具
- burpsuite
解題思路
- 首先 訪問 /robots.txt 或者 /.git/ 發現 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++;
}
}
其中 $numbers 來自用戶json輸入 {"action":"buy","numbers":"1122334"},沒有檢查資料型別,$win_numbers 是隨機生成的數字字串,
使用 PHP 弱型別松散比較,以"1"為例,和TRUE,1,"1"相等, 由于 json 支持布爾型資料,因此可以抓包改包,發送:
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
當每一位中獎號碼都不是0時即可中最高獎,攢錢買flag,
進入題目發現是一個購買彩票的網站,大概猜出flag是要買的
解題程序
輸入任意用戶名注冊

在Claim Your Prize欄果然看到需要買flag,但現在余額不足

通過看網站的robots.txt檔案發現有.git檔案泄露(其實為了方便題目附件中已經給出了原始碼)

用工具GitHack還原源代碼發現api.php檔案中的一段抽獎代碼存在true繞過

利用此處漏洞購買彩票,輸入任意七位數字點擊Buy抓包

將POST資料改成{"action":"buy","numbers":[true,true,true,true,true,true,true]}多發送幾次

然后回來購買flag,得到答案cyberpeace{d4f41f7632aa0c21782f6794aa631411}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/153091.html
標籤:其他
