zoukankan      html  css  js  c++  java
  • DVWA-Brute Force暴力破解(全等级)

    Brute Force(暴力破解)

    暴力破解一般指穷举法,穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。

    Low(低级)

    方法一、BurpSuite暴力破解

    进入DVWA将等级调为low

    打开相应级别的php文件,查看用户名和密码

     

     使用admin和password登陆,登陆成功

    打开burpsuite设置手动代理

     然后输入admin  随便输入一个密码(password除外),然后打开burpsuite抓包

     发送到爆破模块

    我们提前在桌面创建文本文档,在其中把所有怀疑的密码都写进去,这就是创建字典。

     

     点击Load,选择我们刚开始创建的字典,点击打开

     进入Options,把Number of threads调为50

     要对password参数进行爆破,所以选中password参数Add $

     在菜单栏点击Start Attack,开始爆破:

     根据长度对比,发现一个与众不同,可推测password为正确密码,手工验证登陆成功:

     

     方法二、手工注入

    虽然这是爆破破解模块,但是因为网页防护等级较低,所以也可以sql注入

    用户名使用admin'#  密码随意,即可登录

     用户名使用admin 'or '1='1   密码随意,即可登录

     Medium(中级)

    Medium级别的代码主要增加了mysql_real_escape_string函数,这个函数会对字符串中的特殊符号(x00,n,r,,’,”,x1a)进行转义

    $pass也做了MD5校验,杜绝了通过参数password进行sql注入的可能性。以上的内容我们在中级的php文件的代码中都能看到

    这时手工注入的方式就被过滤掉了,我们只能采取暴力破解的方式,用Burp Suite抓包,具体的操作步骤与Low等级相同,不再赘述。

      High(高级)

    我们查看php文件,发现增加了user_token参数,所以爆破要选择两个参数来进行。user_token,用户令牌,每次服务器返回的登陆页面中都会包含一个随机的user_token的值,用户每次登录时都要将user_token一起提交。

    所以,我们这里不仅要爆破密码,还需要爆破用户令牌user_token。同时,High级别的代码中,使用了stripslashes函数(去除字符串中的反斜线字符,如果有两个连续的反斜线,则只去掉一个)

    mysql_real_escape_string对参数username、password进行过滤、转义,进一步抵御sql注入

     通过分析,我们采用的方法,还是Burp Suite来进行穷举,把所有可能的结果全都试一遍。照旧抓包,此时设置两个参数 password和user_token为变量

    攻击类型选择pitchfork,意思是草叉模式(Pitchfork ),它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload,举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。

     接下来进入Options中,在option选项卡中将攻击线程thread设置为1,因为Recursive_Grep模式不支持多线程攻击

     选择Grep-Extract,意思是用于提取响应消息中的有用信息,在Grep - Extract模块中,点击Add,出现下图,在左上方Start after expression中,输入 value='即可,其他部分无需输入,点击Refetch response, 就会在下方的内容栏里出现若干内容,我们查看后,把value='后面的数字(即服务器返回的token,表示每次从响应中获取该值)选中,并且复制该值,因为待会还要另作他用,最后点击确定   cb56e150316ed8a6076567cb6873fd29

     将Redirections设置为Always

     到Payload里面。我们需要把Payload set设置为2,因为我们有两个参数需要爆破,下面的Payload type需要对两种爆破分别设置,先选择Simple list,然后在下面载入字典(这里需注意下,亲身体会出现问题,解决方法是在Payload set为1的时候载入字典,然后再改成2

     之后把Payload type调到Recursive grep,下面的Payload Options就变成了当前的Recursive grep模式了。在最下面一个文本框,把刚刚在Options中复制的那个token值复制到其中

     然后点击爆破,可以找到长度不一样的值,这个就是我们要寻找的密码

     将浏览器改为无代理,输入admin和password 登陆成功

    当然也可以使用脚本,网上有很多类似的教程,由于未掌握语言,所以在此不做演示。

    Impossible

    这个级别我们无法使用暴力破解来爆破这个难度,Impossible级别的代码加入了可靠的防爆破机制,当检测到频繁的错误登录后,系统会将账户锁定,爆破也就无法继续,简而言之,在代码中我们可以看到对登录次数做了限定,这也最接近我们现实生活中的真实情况。同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令。

  • 相关阅读:
    IOS系统设置页面跳转
    android常用自动化测试框架
    Gradle学习总结
    软件开发版本管理阶段描述
    Swift学习笔记(10):类和结构体
    Swift学习笔记(9):枚举
    Swift学习笔记(8):闭包
    Swift学习笔记(7):函数
    Swift学习笔记(6):控制流
    JSON序列化器/解析器
  • 原文地址:https://www.cnblogs.com/heiwa-0924/p/12443497.html
Copyright © 2011-2022 走看看