[GKCTF 2021]babycat
这道题点开始注册登录界面,但是点击注册按钮会提示Not Allowed。
但是查看源码会发现
这里是直接跳出了Not Allowed,构造POST请求,通过burp发包注册一个账号。
注册成功,登录后又上传和下载两个功能,我们发现下载有一个目录穿越,尝试读取,/WEB-INF/web.xml.
由于上传功能只有管理员可以使用它,因此可以根据xml的内容构造出,
../../WEB-INF/classes/com/web/servlet/registerServlet.class,然后下载这个class文件,查看注册的源码 。
可以使用jd-jui反编译class文件,看到源码。可以很容易就找到针对role的处理。
String var = req.getParameter("data").replaceAll(" ", "").replace("'", "\"");Pattern pattern = Pattern.compile("\"role\":\"(.*?)\"");Matcher matcher = pattern.matcher(var);while (matcher.find())role = matcher.group(); if (!StringUtils.isNullOrEmpty(role)) {var = var.replace(role, "\"role\":\"guest\"");person = (Person)gson.fromJson(var, Person.class);} else {person = (Person)gson.fromJson(var, Person.class);person.setRole("guest");}
此时可以有两种方法,绕过,正则表达式中包含了
"\"role\":\"(.*?)\"",
会把所有内容进行完整匹配,但是JSON中的内联注释不会影响其解析,因此可以使用注释来破坏正则匹配,为了让其不直接走if的另外一个分支,我们还是需要让正则匹配有结果从而保证role变量有内容。JSON中键值一样的数据解析时后面的会覆盖前面的,因此可以构造如下payload
data={"username":"july", "password":"123456","role":"superuser", "role"/**/:"admin"}
可以注意到这里取得的正则匹配结果是最后一个,在可以使用注释的情况下,可以构造如下payload。
{"username":"july","password":"123456","role":"admin"/*,"role":"guest"*/}
利用这个payload注册一个管理员账户,登陆管理员账户之后,再根据构造../../WEB-INF/classes/com/web/servlet/uploadServlet.class下载后查看上传文件的源码。
if (checkExt(ext) || checkContent(item.getInputStream())) {req.setAttribute("error", "upload failed");req.getRequestDispatcher("../WEB-INF/upload.jsp").forward(req, resp);
}
item.write(new File(uploadPath + File.separator + name + ext));
req.setAttribute("error", "upload success!");
我们看到内容检测和扩展名检测完成之后,并没有退出,而是继续保存了文件,因此我们可以尝试想../../static/下上传一句话,使用蚁剑连接即可获取flag。
[GKCTF 2021]babycat相关推荐
- [GKCTF 2021]XOR
[GKCTF 2021]XOR 题目 from Crypto.Util.number import * from hashlib import md5a = getPrime(512) b = get ...
- [GKCTF 2021]Random
[GKCTF 2021]Random 题目 import random from hashlib import md5def get_mask():file = open("random.t ...
- CTF——MISC习题讲解(GKCTF 2021系列)
CTF--MISC习题讲解(GKCTF 2021系列) 前言 接下来陆续给大家复现一些赛事的杂项习题讲解,因为本人也是小白入门,有些题目做的不对还请各位大佬多多包涵. 一.[GKCTF 2021]签到 ...
- [GKCTF 2021]RRRRsa
复现[GKCTF 2021]RRRRsa 拿到题目后,准备操作,额,,, 看了看大佬的wp,恍然大悟,分享一下解题的思路.(部分题目如下) 一般看到这种像hint1的式子,都需要用gcd(,n)去分解 ...
- [GKCTF 2021]hackme
[GKCTF 2021]hackme 进入题目后,题目如上所示,查看页面源代码 提示nosql,这里推荐WHOAMI大佬的文章 这里源代码我们也看到了php头,那我们就看大佬文章里php中的nosql ...
- [GKCTF 2021]babycat-revenge
`[GKCTF 2021]babycat-revenge 一进入题目界面如上所示,简简单单,没法注册,登录试了下弱口令还有注入都不是,也没有什么其他页面 找不到线索就抓个包来看看 好家伙,这个注册页面 ...
- GKCTF 2021]excel 骚操作
题目链接 https://buuoj.cn/challenges#[GKCTF%202021]excel%20%E9%AA%9A%E6%93%8D%E4%BD%9C 打开flag.xlsx 估计和wo ...
- [GKCTF 2021]FireFox Forensics
题目链接 https://buuoj.cn/challenges#[GKCTF%202021]FireFox%20Forensics 解题过程 打开题目,有两个文件分别是firfox的记录文件(log ...
- buuctf [GKCTF 2021]你知道apng吗 <apng图片格式的考察>
下载文件得到个 apng的文件 其可以用火狐打开查看 这里需要下载一个工具: apngdis_gui.exe 来分解这个apng图片 打开来看看 1.这张图片是扭曲的需要拉扯一下 用在线ps 扫描得到 ...
最新文章
- html保存blob,HTML文本图像并保存为Blob到数据库
- 我被面试官问到的问题-5
- 1.20 正则表达式详解
- 在Spring MVC中使用注解的方式校验RequestParams
- 腾讯上海某实验室SQL面试题——查询最后任职信息
- 第一章:线性空间和线性变换
- Visual Stdio下安装WTL的向导Widzard
- PYTHON 处理JSON文件(新建key值Findex,并将歌手名字转换为大写首字母作为value值)
- L1-010 比较大小 (10 分)—团体程序设计天梯赛
- outlook qr码在哪里_胡志明市第一次将QR码附加在街道名称板上,目的是什么?
- JAVA动漫论坛BBS系统的设计与实现
- 利用AirPlayer空中播放PC服务器视频、音乐、图片
- python3GUI--微博图片爬取工具V1.5 By:PyQt5(附源码)
- windows 控制台提示:请求的操作需要提升
- 《白话大数据与机器学习》学习笔记
- 第三方网站登录微信——保姆级
- 前端如何使用阿里巴巴矢量图库的图标
- Backpack Cryptography【背包密码】
- 云存储毕业设计基于SSM个人网盘系统设计与实现.rar(论文+程序源码)
- mysql config win.h_mysql python安装错误:无法打开include文件'config win.h'
热门文章
- LeeCode 322. 零钱兑换
- 小程序如何把时间戳转化成具体的时间
- 轻松帮你做到无损放大图片的软件推荐:Topaz Gigapixel AI for mac
- ArcGIS:如何简单地制作一幅专题地图?
- 动画:面试官问我插入排序和冒泡排序哪个更牛逼?
- python二元函数图像在线绘制_“绘图,让科学生动起来”:Python-matplotlib绘图(多元函数拟合-3D绘图专题)...
- 计算机网络特色的班旗,保定七中 | 319班 “一班一特色”班级文化展示
- 网络基本功:路由、抓包工具
- 笔记本电脑硬盘数据丢失怎么办
- 计算机应用基础本试卷号1500,计算机应用基础试卷