“百度杯”CTF比賽 2017 二月場_爆破-3_WriteUp
阿新 • • 發佈:2021-12-01
開啟網站
程式碼審計
<?php error_reporting(0); session_start(); require('./flag.php'); if(!isset($_SESSION['nums'])){ $_SESSION['nums'] = 0; $_SESSION['time'] = time(); $_SESSION['whoami'] = 'ea'; } if($_SESSION['time']+120<time()){ session_destroy(); } $value = $_REQUEST['value']; //獲得value引數值 $str_rand = range('a', 'z'); //輸出a-z字母到一個數組中 $str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)]; //隨機輸出兩個字元 if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){ //value引數值與$_SESSION['whoami']的值相等並且 MD5值子串等於0 $_SESSION['nums']++; $_SESSION['whoami'] = $str_rands; echo $str_rands; } if($_SESSION['nums']>=10){ //$_SESSION['nums']>=10即可獲得flag echo $flag; } show_source(__FILE__); ?>
思路
由19行可看出為弱判斷型別,可以用陣列進行繞過,md5函式不能對陣列進行處理,所以傳陣列。md5()==0
根據獲取到的資訊構造payload ?value[]=ea
程式碼中提到需要提交大於10次,10次過後得到flag
獲得flag
payload
http://xxxxx/?value[]=
本文來自部落格園,作者:oldliutou,轉載請註明原文連結:https://www.cnblogs.com/oldliutou/p/15629331.html