很久没更新了,水一篇
1. welcome_to_zkaqctf
没啥好说的,是原题。给了一个附件,重要代码如下:
- const {promises: fs} = require('fs');
- const fastify = require('fastify');
- const flag = process.env.FLAG || 'zkaq{do_you_believe_this_is_flag?}';
- const app = fastify();
- app.get('/', async (_, res) => {
- res.type('text/html').send(await fs.readFile('index.html'));
- });
- app.post('/', (req, res) => {
- if (typeof req.body === 'object' && req.body[flag] === true) {
- return res.send(`OhoUhOu~ flag is ${flag}`);
- }
- return res.send(`emmmmmmmwmwmwmwm NO...`);
- });
复制代码 关键代码如下:
- if (typeof req.body === 'object' && req.body[flag] === true) {
- return res.send(`OhoUhOu~ flag is ${flag}`);
- }
复制代码 起首判断 req.body 是否为 Object 对象,没啥限制,包满意的。其次对于req.body[flag] === true,这句话将 flag 的值作为 Object 对象的键,阅读上下文,可知 flag 的值来自于process.env.FLAG,但我们是不知道 flag 的值(知道flag还做个屁的题),没办法满意这个条件。那么好,有个小 trick ,我们可以传入 null 值,使其报错,如下:
FLAG:
- zkaq{S0metime_Empty_1s_FU11}
复制代码 2. 科目四
科目四答题,直接根据页面关键词定位到详细的JS代码。
下个断点,同时可以看到通关乐成会给 flag 。
先正常答题,待 debug 卡住时再使用浏览器 console 调用 d 函数。
调用 d 函数。
FLAG:
- ZKAQCTF{d0_y0u_think_netw0rk_security_imp0rtant?}
复制代码 3. 诗和远方
没啥好说的,又是原题,参考:UIUCTF 2024 - Fare Evasion: Written by Jay 17 ,这边简朴过一遍做题流程,起首点击 我是乘客 按钮,会发送一个哀求。
Cookie 处一眼 JWT ,同时相应包中也提供了一个 JWT secret ,先把 JWT 丢到 jwt.io 解码,如下:
没啥思绪,在前端发现了关键线索。
这里给了一个 SQL 语句,单单看这个 SQL语句 是没办法注入的,但是可以观察到上边有段话,最关键的是将 MD5 转换为十六进制字符串,懂得都懂,在 PHP 中,对于 md5() 函数我们也可以指定其效果是否转换为十六进制,客长请看:
那么这时候就不得不提下 MD5 全能暗码了:ffifdyop ,如下:
此时就可以共同这个完成 SQL 注入了,回到之前的 JWT ,我们也拿到了 JWT secret ,这个时候只必要令 kid 字段的值为 ffifdyop 就行了。
拿到新的 JWT ,传参。
乐成拿到了司机角色的 JWT secret,重新构造 JWT ,其他都不变,换下 secret 就行了,如下:
替换 JWT ,拿到 flag 。
FLAG:
- zkaq{DuduDu_1etS_9o_to_P0etry_@nd_distance!}
复制代码 4. 为了部落!
没啥好说的,又双叒叕是原题,参考:JuniorCTF - Pizzagate,起首由 Django 报错找到 /foobarbaz 路径。
必要认证,但用户名处存在 SQL 注入,如下:
乐成登录。
后台有个注册功能,注册用户。
正常注册的话,功能是不全的,观察到哀求包中存在role=user字段,根据前端提示,将其修改成role=dev,如下:
后续可以创建军队和购买军队,由前端提示得知还提供Archery Queen可以购买,但是余额不敷。
这个地方利用逻辑毛病在创建军队时将兵种代价设置成负数,如许在购买时就能负负得正了。
前端有检测,必要抓包修改。
创建乐成。
购买刚才创建的军队。
余额来到了两千多,可以购买了。
购买Archery Queen兵种。
购买完成后,跳转到如下页面。
同样在 html 页面中找到线索,存在着一些隐蔽参数。
构造传参,发现缺少 xml 参数。
联想到XXE,构造 Payload 如下:
其实完备的构造出 XML 数据即可,跟 XXE 没啥关系。
FLAG:
- ZKAQCTF{Clash_0f_C1ans_1s_a_v3ry_classic_9am3}
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|