1. 程式人生 > 其它 >“百度杯”CTF比賽 2017 二月場_爆破-3_WriteUp

“百度杯”CTF比賽 2017 二月場_爆破-3_WriteUp

開啟網站

程式碼審計

<?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