题目出处:首页 - Bugku CTF
✨打开题目发现需要你输入用户名admin的密码,显然你不知道啊!!!
✨此时,你应该想到burp suite的暴力破解功能,随便输入一个密码后抓包情况如下:
✨发现不了什么后,如果直接根据题目提示破解会因为密码字典太多而浪费时间,那我就将它发送数据包,查看得到的响应!!!很明显有段神奇的代码,在提示着什么!!!
✨现在对这段代码进行分析!!!
var r = {code: 'bugku10000'}; // 创建一个对象r,其中包含一个名为code的属性,值为'bugku10000'
if (r.code == 'bugku10000') { // 判断r对象的code属性是否等于'bugku10000'
console.log('e'); // 如果条件成立,输出字符'e'到控制台
document.getElementById('d').innerHTML = "Wrong account or password!"; // 将id为'd'的元素的内容设置为"Wrong account or password!"
} else {
console.log('0'); // 如果条件不成立,输出字符'0'到控制台
window.location.href = 'success.php?code=' + r.code; // 将当前页面的URL更改为'success.php?code=bugku10000'
}
这段代码的作用是根据r
对象的code
属性的值进行条件判断。如果code
的值等于'bugku10000',输出"Wrong account or password!"。否则将当前页面的URL更改为'success.php?code=bugku10000',也就是拥有flag的时候。
✨于是,我们对响应的数据包进行判断,如果,code=bugku10000,则是错误的密码,会在爆破的时候返回1,否则什么都不返回,这就是正确的密码!!!
✨紧接着,找到Grep-Match(正则表达式匹配,是一种用于过滤和提取攻击结果的功能。它允许用户使用正则表达式来定义匹配模式,以便从HTTP响应中筛选出符合特定条件的数据。)添加{code == 'bugku10000'},来确定符合条件的密码!!!
✨最后,在破解的众多密码中会发现zxc123的code == 'bugku10000'这一栏是没有返回1的。
✨即密码是zxc123,输入后得到flag,并且发现你的网址后面出现success.php?code=hacker1000',更是印证了之前的说法是正确的!!!
✨综上所述,导入弱密码top1000密码字典,外加提示z?????,也就是z开头的六位密码,这些条件满足后就可以更快的破解密码了!!!