“百度杯”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

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号