菜鸟渗透日记21——DVWA下使用Burpsuite进行Brute Force(暴力破解)_leesir98的博客-程序员秘密

技术标签: kali渗透测试  

 

1. Brute Force(暴力破解)简介

暴力破解一般是指穷举法,顾名思义,暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。理论上来说,只要字典足够庞大,枚举总是能够成功的!

简单来说就是 一个一个数!

但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包;

所以在实施暴力破解之前,我们需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。

下面我们利用Burpsuite的Intruder模块来对密码进行暴力破解。

2. Brute Force(暴力破解)

实验环境

(1)Windowsxp: IP地址:192.168.65.128;

(2) 测试机:物理机(开启代理,代理服务器为burpsuite)

实验过程

安全级别:Low

(1)设置安全级别

(2)查看源码

(3)源码分析

针对用户输入的用户名和密码,服务器没有进行过滤操作;

没有任何的防爆破机制,存在明显的sql注入漏洞;

(4)实验操作

4.1 首先输入用户名admin,输入随意密码,比如123,然后对数据包进行拦截;

4.2 将获取到的数据包导入intruder;

4.3 清空参数;(这一步很重要!)

4.4 添加所选参数(即需要爆破的参数);

四种暴力破解方式的区别:

   一个字典,两个参数,先匹配第一项,再匹配第二项【sniper】

   一个字典,两个参数,同用户名同密码【battering ram】

   两个字典,两个参数,同行匹配,短的截止【pitch fork】

   两个字典,两个参数,交叉匹配,所有可能【cluster bomb】

4.5 第一种(sniper)方式攻击

添加字典,开始字典爆破;

尝试用爆破的用户名和密码登陆,成功登录;

4.6 再选择第四种爆破(cluster bomb)的方式;

添加字典,开始字典爆破;

尝试用爆破成功的用户名和密码登陆,成功登录;

4.7 也可以尝试SQL注入的方式登录;

安全级别:Medium

(1)设置安全级别;

(2)查看源码;

(3)源码分析

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;

使用本函数来预防数据库攻击;基本防止了SQL注入;

同时,$pass做了MD5校验,杜绝了通过参数password进行sql注入的可能性;

但依然没有加入有效的防爆破机制;

不能采用Sql注入的方式登录;

不能采用SQL注入的方式登录;

(4)实验过程

Medium级别防止了SQL注入,但爆破步骤和Low级别基本一致;

安全级别:High

(1)设置安全级别

 

(2)查看源码

(3)源码分析

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;

stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可用于清理从数据库中或者从 HTML 表单中取回的数据;

(4) 实验过程

通过抓包,可以看到,登录验证时提交了四个参数:username、password、Login以及user_token;增加了爆破的难度;

这样就要求我们发送的每个请求包中包含随机生成的token值。我们无法简单的使用Burpsuite完成;

可以尝试使用python脚本,使用爬虫将服务器每次返回的user_token抓取到,

安全级别:Impossible

(1)设置安全级别

 

(2)查看源码

(3)源码分析

Impossible级别的代码加入了可靠的防爆破机制,当检测到频繁的错误登录后,系统会将账户锁定,爆破也就无法继续;

同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令;

防止暴力破解的有效手段:

1、限制尝试次数;

2、验证码(验证码存在被技术破解风险仅用于增加每次尝试的成本);

3、PDO技术;(

PDO全名PHP Data Object
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leesir98/article/details/99888530

智能推荐

matplotlib之pyplot模块之图例(legend)基础(legend()的调用方式,图例外观设置)_pyplot 图例_mighty13的博客-程序员秘密

matplotlib可以为可见对象(Artist,比如线条、形状)添加图例(legend)。官方建议使用pyplot模块的legend函数简便的创建图例,而不是使用底层的matplotlib.legend类构造图例。函数签名为matplotlib.pyplot.legend(*args, **kwargs)legend()基本应用演示使用图例的基础有两个:handles:可见对象(Artist,比如线条、形状)序列,与labels配合使用。labels:类型为字符串列表,即图例中显示的文本集合。

UOS QT+ffmpeg+sdl2开发环境配置_文三~的博客-程序员秘密

一. UOS系统配置设置网络 (例子)IP:192.168.8.220子网掩码:225.225.0.0网管:192.168.8.254DNS:114.114.114.114系统激活,使用试用期激活90天。通用-》系统信息-》激活进入开发者模式https://jingyan.baidu.com/article/7f766daf6045a60001e1d0b1.html设置管理员密码 sudo passwd root允许远程SSH连接 安装sudo apt-get install open

Mybatis使用SelectKey自定义主键_流烟默的博客-程序员秘密

SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。属性 -描述:① keyProperty : selectKey 语句结果应该被设置的目标属性。② resultType:结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。③ order: 这可以被

Elasticsearch 查询数据的工作原理是什么?_androidstarjack的博客-程序员秘密

来源:8rr.co/GsAa面试题ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就...

009_字符串内建函数_uncap_first_自由与束缚JavaJavaScript的博客-程序员秘密

1. 内建函数就像FreeMarker在对象中添加的方法一样。要防止和实际方法和其它子变量的命名冲突, 则不能使用点(.), 这里使用问号(?)来和父对象分隔开。2. 为了简洁, 如果方法没有参数, 那么就可以忽略(), 比如: 想要获取path的长度, 就可以写作: path?length, 而不是path?length()。3. 内建函数关键性的另外一个原因是FreeMarker不会暴露对象的Java API。尽管Java的String类有length()方法, 但在模板中却是不可见的, 就不得

MT【346】拐点处分界_allw1111的博客-程序员秘密

已知函数$f(x)=-x^3+9x^2-26x+27$,对任意$k>0$,直线$y=kx+a$与曲线$y=f(x)$有唯一公共点,求$a$的取值范围.分析:$f^{"}(x)=-6x+18$,如图,$f(x)$在$(-\infty,3)$下凸,$(3,+\infty)$上凸.拐点$P(3,f(3))$处的切线方程为$y=x$.$f(x)$的极大值为$M(3+\dfrac{\sq...

随便推点

将多个CSV文件合并成一个_csv 合并 保留文件名_cigo_2018的博客-程序员秘密

#%%import pandas as pd  import os  SaveFile_Name = r'all.csv'              #合并后要保存的文件名   #将该文件夹下的所有文件名存入一个列表  file_list = os.listdir()    #读取第一个CSV文件并包含表头  df = pd.read_csv(file_list[0])#将读取的第一个CSV文件...

定制自己的线程池管理类、防止OOM_线程池避免oom_灬弘法大师丶的博客-程序员秘密

在Android开发中、涉及比较深的话、我们会用到线程池来做异步操作 比如下载图片、执行异步任务等、为了方便管理、继承一个线程池管理类、 在使用线程的时候只需要 submmitJob和removeJob、不会产生大量的线程、有效防止OOM

Mac 任意Python环境安装 Caffe 的终极教程_weixin_33725722的博客-程序员秘密

原文链接 https://jinkey.ai/post/tech/m...本文作者 Jinkey(微信公众号 jinkey-love,官网 https://jinkey.ai)感谢 yubang 老司机指导填坑,大神的博客http://blog.yubangweb.com/文章允许非篡改署名转载,删除或修改本段版权信息转载的,视为侵犯知识...

判断一个动作是否正在运行中_cocos 怎么判断当前节点是否在运动_晨曦聆云的博客-程序员秘密

cocos2d-js并没有提供判断动作是否正在执行的方法,只有一个获取节点正在执行动作的总个数,这个方法显然不行。好在actionManager中有一个getActionByTag()方法(通过目标对象和标签获取一个动作),通过这个方法,就可以判断节点是否正在运行某个动作用法:1、获取动作管理类的单利对象var am = cc.director.getActionManage() ...

JNDI~~~~_Java_apprentice的博客-程序员秘密

JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。JNDI可访问的现有的目录及服务有:DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CO

单片机作业1_为OLED制作汉字字库_第1部分_oled字库_blackcat2021的博客-程序员秘密

了解字符集基本常识,在电脑上使用C语言编写控制台程序,模拟汉字点阵输出,为向单片机&OLED12864移植做好准备。

推荐文章

热门文章

相关标签