[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)

1、node.js koa的主要框架目录
创建一个rest-hello的工程,结构:
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)

2、jwt攻击方法
深入了解Json Web Token之概念篇
深入了解Json Web Token之实战篇
总的来说,jwt由三部分组成:Header.Payload.Signature。攻击的办法之一可以把header中alg字段更改为’none’,且Payload的secretid为空,即没有Signature
因为sid为空时,jwt将采用none algorithm解密,即对应了将alg='none’的加密

wp:

随便注册,登录
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)

发现有三个字段
查看源代码,发现.js后缀的static/js/app.js文件,并没有发现什么
查看rest api–controllers/api.js
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)

发现了都对jwt的认证
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)
并且只有admin登录才能查看到flag
将刚刚登录界面的第三个字段authorization放到https://jwt.io/解密
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)
然后更改Header中alg为none,Signature删空
Header:
{“alg”: “none”,“typ”: “JWT”}
Payload:
{ “secretid”: [],“username”: “admin”,“password”: “hhh”,“iat”: 1612970917}
两部分分别base64加密
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyAgInNlY3JldGlkIjogW10sInVzZXJuYW1lIjogImFkbWluIiwicGFzc3dvcmQiOiAiaGhoIiwiaWF0IjogMTYxMjk3MDkxN30.
[HFCTF2020]EasyLogin(node.js的koa框架、jwt攻击方法)
进入admin的hone,get flag即可得到flag

上一篇:ALG 4-4:Shortest Paths in a Graph (Dijkstra 算法)


下一篇:ALG 7-1: Network Flow