书接上回,咱就是说啊!这src还真的细细的分,这回咱们看前端加密。
登录框的测试,很多情况下,我们是需要暴力破解账号密码的。但有些网站对请求参数前端进行了加密,让我们无法轻易的去爆破账号密码。下文就是一些简单的手法来逆向前端加密。
案列
可以看到这个高校也是提示出了密码组成,如果没有的话,可以用搜索引擎搜索,如“site:xxx.edu.cn 初始密码”。
F12记录这个包,password是加密的,那么接下来我们的目标就是破解这个加密。
Ctrl + Shift + f,搜索password关键字。为什么搜索password?
发起请求的参数都是前端固定好的,所以这个password就是那个input标签的name,前端获取input标签内容一般都是用到name来获取的。
这里有三个js文件含有password关键字,我们不必去看第一个,因为他是别人封装好的库。
我们先来看第二个,先打上断点,重新发起请求。
我真是服了这个老六,运行后发现它已经加密了。
可是通过代码来看,不应该。
于是转来看前端,因为毕竟他是获取name为password的input标签里面的值。原来是我错怪他了。
看看调用堆栈,看是哪里调用了这里,大多就可以判断哪里加密了。
看,不必多说了吧,接下来就是复制粘贴实现加密的js代码。
我们来看一下这段代码,从最里面的b看,b是我们输入的密码。
然后是,$("input[name='lt']").val(),这个就是获取前端name为lt的input标签的值,我们最开始就看到了这个页面只有两个输入框,其实这个还很常见的一种手法,给这个隐藏起来了。
var a = strEnc(hex_md5(b + $("input[name='lt']").val()).substring(s, e),
"ec07204c8f2948d8b3927e769d63ca31!!",
"92112a9c1d234e07b1499ebd9b01da00!@",
"402ec3db0a524dc09dc99239b1c82fe2!#");
然后是hex_md5(),这个就是我说的“复制粘贴”,进去看看就好了。
这里粘到js调试工具里
然后是,substring(s, e),我们明显不知道s和e的值,ctrl + f,搜索一下就好了(作用域在一个上下文中,因为可以调用)。固定值
最后一个,strEnc,同样的进去看看。你懂我意思吗?- 复制粘贴
好了,看一下这个大体流程
strEnc(hex_md5((输入的密码 + 页面隐藏lt的值)).substring(4,27), "ec07204c8f2948d8b3927e769d63ca31!!", "92112a9c1d234e07b1499ebd9b01da00!@", "402ec3db0a524dc09dc99239b1c82fe2!#")
模拟一下,先获取lt,嗯,准备就绪。
strEnc(hex_md5(passwordLT-2363762-u9UMLR7dq5M6vvHEBSXI).substring(4,27), "ec07204c8f2948d8b3927e769d63ca31!!", "92112a9c1d234e07b1499ebd9b01da00!@", "402ec3db0a524dc09dc99239b1c82fe2!#")
成功伪造加密
0x02
总体来说是简单的,是一个很好入门的案例
end
原文始发于微信公众号(Blame安全团队):实战破解EDU统一身份认证前端加密
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论