什么是 jwt?
它是 JSON Web Token 的缩写,是一个开放标准,定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息,该信息可以被验证和信任,因为它是数字签名的。它就是一种认证机制,让后台知道该请求是来自于受信的客户端。
jwt 由三部分组成,它们之间用圆点(.)连接,这三部分分别是:Header、Payload、Signature
附上 jwt 的编码解码网站:https://jwt.io/
访问题目环境,给了一个路径
访问 /login
给了我们一个 payload
{"account":"wuxidixi","mima":"makamaka"}
这个是 json 的数据格式
以 json 数据的格式进行 post 提交
回显得到一个 token ,也是 json 的格式
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50IjoibGluZ2h1bnpoaXppIn0.nRNZM_7dcxDoa-lKkrhFnNNxVNZD88xiwI1-QYqioSg"
}
尝试直接提交,发现不行
说实话这个题目的描述有点误解人,可能担心请求太多服务器吃不消吧
其实它这里是存在 robots.txt 的
访问 robots.txt 得到路径 /fulage
继续访问 /fulage
提示无法 get ,那么下面我们换用 post 请求
回到最初请求的 login , post 传入 json 格式的 tooken
使用 burpsuite 抓包,发到重发器
修改 post 请求内容为 /fulage
重发提示不是 admin 无法获取 flag
对 token 进行 jwt 解码
对账户进行伪造,修改为 admin
得到 token 编码的值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50IjoiYWRtaW4ifQ.XaW_ca6uIVjJ4diX9a_mxlerUFg3LcQJvg-n6ToPBZ8
再次传入 token
回显得到 flag:
flag{now_you_are_jwt_BigHacker}