前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JWT注入

JWT注入

作者头像
字节脉搏实验室
发布2020-06-04 12:08:12
5930
发布2020-06-04 12:08:12
举报

通过这道题再次学习到JWT的一种考法。首先题目打开是一个登录框,默认弱口令admin/admin登陆成功,页面返回了一个key值

回到前台重新再注册一个号purplet/123456,登陆后返回如下信息

说明后端肯定判断了当前登录用户是否为admin,如果不是就返回Hello+用户

登陆后再利用BurpSuite进行抓包,看到cookie处存在JWT的信息,对前两段内容进行base64解码,可以看到

{“alg”:”HS256″,”typ”:”JWT”}.{“user”:”purplet”,”news”:”Hello purplet”}

可以看出后端通过JWT对当前用户进行了判断,从而决定页面输出内容,因此猜测user字段中可能存在sql注入漏洞,利用在线加密网站 https://jwt.io/ 进行尝试

PAYLOAD处user构造一个sql注入的检测,news随便输入即可,当user处的值为真即可输出news中的值。密钥填写admin登陆后所给密钥

然而发过去却触发了waf,因此考虑绕过,先将空格换成/**/试下

可以看到当等式不成立时输出红线所画信息,再次构造user为admin’/**/and/**/1=1#

可以看到出现了news中的值:1,那么确认是sql注入无疑了,引用大佬的脚本,利用load_file读取根目录下的flag

还有一种方法,将算法置为none,同虎符杯的easy_login一题有相似原理,将第三部分置空,但前面带上.

如上这么构造,对.左右两边分别base64加密,发包过去,得到正常回显

很明显这样也可以成功构造注入,经过Fuzz测试又发现过滤了select,可用sel<>ect绕过,借用大佬的脚本跑出flag,这波学习到了。python2下运行

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档