[HFCTF2020]EasyLogin 1

打开题目是一个登录框

查看页面源代码,发现app.js中显示,访问/api/flag,如果成功,则把flag的值以username的形式返回出来

访问后显示权限不够被拒绝

app.js中还有一个提示

发现koa-static是在构建Web应用时,提供静态资源(如HTML、CSS和JavaScript文件)是必不可少的一部分。 Koa-static正是为此目的而设计的,它是一个简洁且强大的Koa框架静态文件服务中间件,使得处理静态文件变得轻而易举。

koa的框架结构

controllers 项目控制器目录接受请求处理逻辑

DataBase 保存数据库封装的CRUD操作方法

models文件夹 对应的数据库表结构

config文件夹 项目路由文件夹

app.js 入口文件

可以看到controllers 是项目控制器目录接受请求处理逻辑的,访问一下controllers/api.js

可以看到无法创建admin账户,创建会报错

但是下面一段又显示不是admin账户无法访问flag

所以我们只能伪造admin账户,抓包和源码中都出现了jwt

Jwt的格式为前两段是base64,第三部分加密方式为第一部分声明的加密算法结合密匙进行加密,解密地址:JSON Web Tokens - jwt.io

需要一个脚本,去解密第三部分

import jwt #需要下载,pip3 install PyJWT

token = jwt.encode(

{

 "secretid": [], #让"secretid"为空,他的加密算法就为空,所以那个加密就废了,也算是绕过jwt的一种方式

 "username": "admin", #伪造对象

 "password": "123",

 "iat": 1726371956 #对应自己解码出来的iat

},

algorithm = "none", key="")

print(token)

利用脚本生成的jwt

然后改包发送,箭头指的地方有用需要保存

然后使用随便注册的账号登录获取下flag,把原包中的改成上一步的就可以获得flag了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值