题目:HTTP基础认证
点击click 弹出 输入用户名和密码的对话框,要求输入正确的用户名和密码得到flag。
解体思路:
用Burp抓包,习惯性输入用户名admin,不输入密码,查看发送包内容。
查看回应包内容:
发送包中包含 Authorization: Basic YWRtaW46,回应包中有提示WWW-Authenticate: Basic realm="Do u know admin ?",猜测用户名应该是admin。根据发送包Authorization内容可知,是经过Basic64编码,解码YWRtaW46,对应明文是admin: 那么认证的格式应该是 用户名:密码的形式,而且要进行Basic64编码后发送。
使用Burp的Intruder模块尝试进行密码破解,因为发送报文中只有密码一个变量参数需要破解,形式为 admin:password 在密码为空的情况下,admin:使用Basic64编码后是 YWRtaW46 ,在Intruder模块 的 位置处 修改Authorization值为 Authorization: Basic YWRtaW46§§ 。有效载荷内容如下图:
使用简单清单及常用密码字典,因为发送是经过Basic64编码后的信息,所以在有效负载处理中增加编码规则,有效载荷编码这里去除URL编码,要不然发送的认证信息这里都是明文(类似 123456,adfas)。
设置好以后,进行破解,结果如下图。
发送的有效载荷密码都是经Basic64编码后的值,找到长度不一样的那条数据,查看回应报文,得到flag。
我查看之前破解这个题目的思路,是把Authorization的值作为一个整体带入有效载荷中,比如
admin:123456 编码后是YWRtaW46MTIzNDU2,Authorization的值是
Authorization:Basic YWRtaW46MTIzNDU2
这需要在Burp中有位置设置成 Authorization: Basic §YWRtaW46MTIzNDU2§
有效负载处理中添加前缀 YWRtaW46,如下图
我想着用最直接简单的办法,去掉了了前缀,发送报文中保留了确定的 admin: 编码后的内容Authorization: Basic YWRtaW46§§ 此时带入的密码为空。再把密码字典中的内容转换成Basic64编码后,发送请求报文。