BUUCTF Brute 1使用BurpSuite爆破详解

最近研究一下白帽子安全,主要关注WEB安全,在做完了常规的靶场xsslab、SQLI、DVWA、Pikachu后,了解了白帽子安全的基础知识。进一步开始用一些CTF来练习。本文是从BUUCTF网站上,去解一个WEB的Flag的详细记录。

0x00 打开BUUCTF,打开靶机

BUUCTF的地址在这里:BUUCTF在线评测 (buuoj.cn),进入后选择Basic->BUU BRUTE1.

c88dd833eaaaa52490b339aa75d2867f.png

选择BUU BRUTE 1后,创建靶机。

d66f79068d145b17ae314c4b364340a3.png

点击其中的靶机URL,即可打开靶机,进入对应的WEB程序。

5d78d3fbdbd058ca58abd677b22983cf.png

Now, let's go to hack it!

0x01 对登录过程的初步分析

在进行爆破之前,分析一下这个登录界面的登录过程。如果在用户名和密码都未知的情况下,进行用户名、密码的组合尝试爆破,那么尝试次数非常庞大,假设用户名字典有10000个用户名,密码字典有10000个密码,那么意味着要进行10000*10000次的尝试。

如果能够单独先测试用户名,得到用户名后再测试密码,那么尝试次数会大幅度地降低,把尝试次数减少到10000*m+10000次(m为探测出的合法用户名数)。

能够做出判断的依据,是用户名错误、密码错误上,能不能从response中得到差异,只要能找到差异,就能够单独的进行用户名测试、单独进行密码测试。我们看看这一题中,差异在哪里(It's really obvious since it's a course!).

7f9397c83bec6adc0da8da1318902665.png

抓包看一下,会单独提示”用户名错误“,因此估计可以单独进行用户名的猜测爆破,找到合法的用户名。

找到合法的用户名后,即可指定合法用户名,再对密码进行爆破。

0x02 对用户名进行爆破,寻找合法用户名

打开靶机,输入一个用户名和密码;在BurpSuite上打开网络拦截,断住由浏览器访问靶机上的HTTP数据。

1b6061f73372704683a1ce85397b6058.png

下面是BurpSuite断住的HTTP数据:

c636ae5e14d79d9da45b5f47426a831f.png

可以看到主要的可测试参数username和password。先对username进行爆破测试,密码维持me123456,不进行尝试。

为了对username进行爆破,对其添加payload positions,如下图:

45aefc385248c846a8bb05a50f2709cd.png

下一步设置payloads的值,即确定用户名字典,以进行用户名的批量测试。

如下图:

77a5dfb86d122c326a23d83f12701136.png

a.Payload type

    由于我们是从用户名字典文件里,提取探测的用户名列表;所以类型选择Simple List即可。后面的Reqeuest Count,提示的是进行探测的payload的数量。

b. Payload Options
    由于从文件里导入用户名列表,所以选择”Load",选择好字典文件,自动会把文件里的内容加载得到列表里。

设置好position和payload后,启动爆破,start attack! But... 很快我们看到了不期望的情况:

e42797d23aeffee4cef8715605d73ff0.png

Too Many Reqests! 服务端检测到过快的登录尝试,进行了屏蔽。猜测是短时间爆破的次数太多了,对应的解决方法,是减少并发线程数和每次访问的时间间隔。经过几次尝试,确定合理的线程数是1(单线程),时间间隔为100毫秒,即1秒钟进行10次尝试,不会导致服务端进行访问拦截。经过测试,找到了合法的用户名:

db6ab87f63ad5bd30c7ac6b420ff96ab.png

根据Length进行排序,找到返回长度显著异于其它请求的payload,打开对应的Response,内容为“ 密码错误,为四位数字”。 说明这个payload里的用户名,用户名合法,只是密码错误了。经过这个过程我们确定了两个重要信息:

  1. admin是一个合法的用户名

  2. 密码是四位数字,从0000到9999.

依据这两个重要信息,进行下一步密码的爆破测试。

0x03 对登录密码的爆破,寻找正确的密码

在有了过程2的两个信息后,确定了下一步进行爆破的方向:对用户admin进行密码的探测。先对payload position进行修改,把尝试的位置,从用户名专项密码;同时把用户名设置为admin。

f9907321db63f210479ba09af8f95f54.png

下一步设置payloads内容,清除上一步选择的用户名信息,设置密码的探测内容,由于密码为4为整数,所以在payload type里,我们选择类型为Numbers。如下图:

ca199f706f0ac98cabbd7e40f50dd17f.png

由于是四位整数,所以最小值为0,最大值为9999,设置递增步长为1,以探测每一个从0到9999的数字;由于密码为4位,所以对应不足四位的,需要以0补齐四位数。设置Min integer digits和Max integer digits的长度为4,设置小数点位数Min(Max) fraction digits为0. 此时可以在Example里,看到对应的payload的生成格式。

为了避免被服务端因访问频繁而阻断,依据探测name时的经验,设置线程数为1,访问间隔为100毫秒:

1bf7daa5a77a951f000a9e251ccd0bf3.png

OK, Lets start attack! 我们从attack结果里,很快发现了一个与众不同的payload:

93c0a7745fcbb366e70705411253447a.png

打开Response,看到内容:登录成功。flag{xxxx-xxx}, 拿着flag去靶机的页面输入,闯关成功。文章来源地址https://uudwc.com/A/y54L1

原文地址:https://blog.csdn.net/bill_fang/article/details/126576938

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年10月25日 04:05
python什么版本比较稳定,哪个版本的python最好用
下一篇 2023年10月25日 05:35