BugKu Web渗透之bp
题目如图:
一看题目就感觉是用burpsuite去用密码字典去爆破的。毕竟都已经提示地这么清楚了。
启动场景,打开网页。如下图:
此题目,用户名都已经告诉我们了,只要爆破密码,感觉 so easy 呀!
步骤一:
打开bp。在网页上随便输入一个密码后提交。
之后在bp的把这条记录发送到Intruder,爆破模块。
步骤二:
选择密码参数值“111”,再点击add按钮,(这一步的意思是把111设置为爆破参数)。
再选择上面的tab标签Payloads。
一般情况是:在tab标签页load导入top1000的弱密码字典,导入字典后就可以点击右上角的 start attack 按钮,开始爆破了。
但是我们这题有其他提示,所以还需要做其他处理。
步骤三:
下载一个top1000的弱密码字典。
github上有,下载地址:https://github.com/k8gege/PasswordDic/tree/master
里面有很多弱密码字典,选择top1000就可以了。
步骤四:
按提示处理弱密码字典。
由于提示写了,密码是6位数,而且以z开头的,有两种情况:一是直接长度为6,第一个字母是z的密码,二是长度为5的,并在前面加上z。
我们首先试一下第一种情况,因为更简单,就在notepad中搜索以z开头的。如何搜索以z开头的?
我们知道换行是"\r\n", 那么换行后的第一个就是开头的字母,于是我们搜索"\nz",记得要勾选扩展。如下图,不然不能识别 \n:
然后选出只有6位,并且是z开头的密码,其余删除。最后只找到四个,于是导入bp,再去爆破。
发现结果都是一样,没有长度不同的。点击响应包查看,发现里面有段这样的代码:
var r = {code: 'bugku10000'}if(r.code == 'bugku10000'){console.log('e');document.getElementById('d').innerHTML = "Wrong account or password!";}else{console.log('0');window.location.href = 'success.php?code='+r.code;}
发现代码里面写着一个success.php。那么这个是不是成功登陆的php呢?
步骤五:
查看sucess.php,用导出的四个z开头的密码来传参。
网页显示都是no。
步骤六:
再次查看上面的代码,感觉可以用bugku10000去尝试下。结果flag出现。
完毕!
其他探讨:
其实做到这里我还是有些疑惑的,为什么告诉我们密码,最后好像又没有用呢?
然后我又直接在网页中尝试输入四个z字开头的密码,发现 zxc123 输入后,直接点击提交也是可以展示flag的。直接跳转下图:
所以这题,主要不是让我们用bp爆破,而是从题中信息找取密码的吗?
然后,之前不是没有尝试五位数密码的,前面再手动+1的,我手动筛选了下,然后再在Payload processing中添加前缀“z”。
结果也还是一样,返回包长度都为908,如下图:
所以也不是5位数密码,前缀再加“z”。
最后也对比了两个数据包,直接在网页上输入和用bp爆破的,发现返回包是一样的。
所以这题,其实还是代码审计吗?