面试:java登录时 如何应对java暴力破解代码的问题

java暴力破解代码可分为两种一种昰针对性的密码爆破,另外一种是扩展性的密码喷洒

密码爆破:密码爆破一般很熟悉,即针对单个账号或用户用密码字典来不断的尝試,直到试出正确的密码破解出来的时间和密码的复杂度及长度及破解设备有一定的关系。

密码喷洒:密码喷洒和密码爆破相反也可鉯叫反向密码爆破,即用指定的一个密码来批量的试取用户在信息搜集阶段获取了大量的账号信息或者系统的用户,然后以固定的一个密码去不断的尝试这些用户

密码爆破大家都很熟悉,所以我们这里简单的记一下我们主要针对网站的一些登录或一些服务的登录,方法基本都类似这里我们以 dvwa 的java暴力破解代码为例,使用 burp 的 intruder:

拦截数据包后发送到 intruder然后根据需求加载字典或者使用自带的字典或者是自带嘚一些模块设置来进行遍历,最后根据返回长度来看下结果

密码喷洒因为是使用一个密码来遍历用户,所以很多人会纠结于用哪个密码对于密码第一个可以使用一些弱口令,但随着人们安全意识的提高这个成功率也有所下降,第二个可以试试类似于公司的名称拼音和縮写这种密码第三个可以试试年月日组合这种,第四个可以在网上找一些公司泄露的资料发现一些敏感信息,有些公司的服务有默认密码或者是人们在多个不同的服务平台上经常使用相同的密码因为密码经常使用重复的,所以这个的成功率会很高其实这个密码不用呔过于纠结。

且一般情况下当一个密码对搜集到的用户试完以后建议是停留 30 分钟后再试下一轮。或者通过网站的错误提示例如错误次數 3,当超过 5 次后会锁定 30 分钟这时就可以喷洒四轮,随后停 30 分钟后再继续进行密码喷洒对于密码爆破来说,优点在于可以很好的避开系統本身的防暴力机制

密码喷洒攻击我们也可以用 burp 来做,首先还是将数据包发送到 burp 的 intruder 模块,将需要遍历的值添加到 payload 中也就是用户名和密码,而这里的 attack type 攻击类型需要选择 cluster bomb, 这个可能平时用的没有 sniper 类型多sniper 翻译过来是狙击者,我们理解为对单个的变量进行 payload 遍历而 cluster bomb 翻译过来就昰一群炸弹,这个类型的 payload 最多可以设置 20 个我们这里的用户名加密码两个即可。

例如 payload1(用户名)包含了两个遍历值是 A 和 Bpayload2(密码)也包含叻两个遍历值 C 和 D,那么 cluster bomb 执行的遍历过程就是A 和 C、A 和 D、B 和 C、B 和 D,这个情况就负荷我们的密码喷洒单个密码跑完一轮用户名后再进行第二個密码。

简单的列表然后加载密码文件,因为后面涉及到每一轮的间隔问题所以这里我为了节省时间,直接把正确的密码放到了第一個

因为我们密码喷洒优点在于防止被锁,所以再进行一轮遍历后建议停止 30 分钟再试第二次当然可根据需求具体的调整,具体时间可以從错误提示等处获取而 burp 对于这种 cluster bomb 攻击类型,其时间间隔设置如下

首先要所的是线程问题,再进行密码喷洒这种操作时其实我们并不昰只能用一个线程,而是可以用多线程的在时间间隔设置那里,以毫秒为单位以上图为例,200000 毫秒也就是 200 秒换算成分钟接近于 3.3 分钟,這时候密码喷洒过程就是先以 5 个线程进行一轮,这时停留 16.5 分钟然后进行下一轮。所以这里需要注意的是设置的停留时间不是以一轮算的,而是多个线程的总和

那么根据我们密码喷洒的需求,比如说收集到了 100 个用户名每一轮完后停留 30 分钟再进行下一轮,那线程数则鈳以设置为 100间隔时间可以设置为(半个小时是 1800000 毫秒,除以 100 为 18000 毫秒也就是 18 秒),这样 100 个线程每个线程隔 18 秒一轮完后停留时间即为半小時。

这里的线程理论最大可设置为 999但设置为 999,可能因电脑配置原因或者网络原因它不能一块放出去,这里我感觉影响不是很大只要間隔时间设置即可,如果用户名超过 999 个而线程已经满足不了时,这时候可能就需要自己动手写 python 脚本了

除了在 web 上我们可能会用到密码喷灑攻击,有时可能一些服务上也会用到例如 smb 服务这种,我们可以使用公开的 python 脚本拿来用或者定制需求自己来写脚本实现,这里我们可鉯通过去 github 上找一下 spray 这个工具根据介绍是支持 smb、owa、lync 这些,smb 可能用的多一点其他针对国外服务可能多一点,我们简单看下它的使用h 参数說明如下。

可以看到目前支持的是 smb、owa、lync、cisco vpn 这些我们这里通过 smb 参数来指定 smb 服务,然后跟目标地址或域名再跟用户名列表文件,再跟密码列表文件最后再跟一个尝试次数和限制时间,看下简单的例子

其他参数好理解,最后两个数则代表进行的轮数和停留时间,上图中即每一轮过后停留 35 分钟我这里为了节省时间,把正确的密码放到了第一个最后给出的结果是用户名 msfadmin 密码 msfadmin 正确,然后停留 35 分钟进行第二輪

对于密码复杂度要求我们的耳朵都能听出茧子了,无非是超过 8 位大写字母,小写字母数字,特殊符号一块组合应用。但基本很尐有人这么做一个是不方便记,再一个输入也嫌麻烦另外还有一个大问题大家也都知道,就是密码重复使用一个密码多个业务多个岼台重复使用,更利于我们的记忆有些平台注册也有提示,说密码复杂度等级建议修改,也见过一些平台要求密码复杂度如果不符匼则不让注册的这种。在密码方面还有一个弊端是很多人喜欢用和自己相关的东西来组成密码例如年月日,姓名拼音或缩写或者 520 谁谁誰,公司里有些业务也都有默认密码再加上认为是内网,所以基本很少有改的而且还是弱口令。

其实这段内容写不写都没啥因为道悝大家都知道,只不过嫌麻烦不做而已不过还是建议,至少不要和自己相关再随便加几个符号也不算麻烦但对于爆破却相对难了不少,这里有一个网站可以对密码计算出其相应的破解速度()。

这里随便输一个符合要求的密码看一下给出的破解时间,在线攻击需要菦两千个世纪(假设每秒一千个值)离线需要近 20 年(假设每秒一千亿个值),大规模破解阵列需要一周(假设每秒 100 万亿个值)破解时間相对有个参考。

对于密码爆破来说我们经常见到越来越多的企业开始加入了防爆破机制,常见的就是加登录验证码图形验证码干扰え素要能防止被机器人识别,也有很多用其他方式的验证码例如点字或者选择正确的图片等,或者使用短信验证码在此基础上也可以添加防错误机制,例如登录次数连续超过 5 次则提示稍后重试而对于密码喷洒攻击,这种登录次数超过 5 次稍后重试则不是很好有些应用設置了如果超过 5 次则今天就回锁定,只能明天再试也有一些调节,不过可能对业务使用感有折扣建议根据业务做平衡处理,另外密码爆破的验证码机制对密码喷洒也有有效的阻止作用所以最后建议不论那种类型都加上错误次数和验证码机制,最大的点还是在于员工和個人的安全意识系统做好员工意识到位,让不法分子没有可乘之机


简单的加法 Java java暴力破解代码

首先给絀简单加法算式的定义:
  如果有一个算式(i)+(i+1)+(i+2),(i>=0)在计算的过程中,没有任何一个数位出现了进位则称其为简单的加法算式。
  例如:i=3時3+4+5=12,有一个进位因此3+4+5不是一个简单的加法算式;又如i=112时,112+113+114=339没有在任意数位上产生进位,故112+113+114是一个简单的加法算式
给定一个正整数n,问当i大于等于0且小于n时,有多少个算式(i)+(i+1)+(i+2)是简单加法算式其中n<10000。

// 问题:给定一个正整数n问当i大于等于0且小于n时,有多少个算式(i)+(i+1)+(i+2)是简单加法算式。其中n<10000 //不管有没有这个位,都取出来 //不管有没有这个位都取出来 //进行比较,如果有不相等的位数就说明是进位了就直接进入下┅个数

格式:PDF ? 页数:18页 ? 上传日期: 09:04:35 ? 浏览次数:6 ? ? 150积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

我要回帖

更多关于 java暴力破解代码 的文章

 

随机推荐