HFCTF2020-EasyLogin--jwt身份伪造
[HFCTF2020]EasyLogin
考点:
jwt身份伪造
node.js框架
首先我们拿到题目的就是看到一个登录框的形式
我们先尝试登录,刚开始猜想是sql注入之类的,然后就跑了一下fuzz但是没有任何的过滤,肯定就不是了。然后就走正常的步骤。
登录后有弹窗点击获取flag但是权限不够。那这问题就清楚了,我们需要更高的权限、
admin的用户有不让我们登录,说明就是我们需要登录admin用户
有弹窗,是获取用户权限,那我们首先想到的就是xss了,然后测试一下,但是没有弹窗的地方
1 | <script>alert(“hey!you are attacked”)</script> |
完全没有反应,就直接是在post参数里面读取的没有放在html文件里面处理,是在PHP处理的。
方法不行,换个姿势。
抓包看数据流向
还真有收获,我们发现在注册的页面,注册完以后,会返回一个秘钥token值
同时在登录的时候会将token和用户名密码放在一起
这个秘钥有意思了,分三段,最前面的那一段是不是很熟悉,
没错就是上次做的jwt
直接上工具爆秘钥
1 | https://github.com/brendan-rius/c-jwt-cracker |
搞活
1 | docker run -it --rm jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZWNyZXRpZCI6NCwidXNlcm5hbWUiOiJhc2QiLCJwYXNzd29yZCI6ImFzZCIsImlhdCI6MTYyODU3MDkzNH0.tRWvFyOpamdx_c50i9HoS9NR0HLdJQRKeOiZG8wbNcg |
但是还是我们太天真了
md直接解不出来。
看来肯定不是爆密码的事情了。
然后就没有办法了,继续回去看源码还有什么了。
这里还隐藏了一个静态js源码。
这里就是js源码泄露的一个问题了
直接上
1 | /** |
但是这个app.js根本就没有什么愿意,就是简单的每个文件夹的作用。
最后实在没有办法了,看wp了。
这里确实有js源码的泄露,但是不是这个目录我丢,还需要自己找。
https://www.cnblogs.com/karsa/p/12762297.html
1 | f12审查元素,发现app.js,发现是node.js写的后端。框架用的是koa |
关于node.js框架结构
1 | js弱类型语言,空数组与整数1比较时,返回turue |
源码
解析
下面开始操作
jwt认识
jwt绕过
伪造一下jwt
因为我们上面刚刚已经试过没有办法破解jwt,那我们直接就伪造就完事了
1 | pip3 install PyJWT |
payload
1 | import jwt |
然后提交
登录成功
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 like4h!