zkap_春节赛
题目情况

web
welcome_to_zkaqctf
nodejs题目。

给出附件包含后端源码,app listen部分根据本地nodejs监听调式需要,自行添加,用node --inspect app.js命令启动调试监听
// const host = '127.0.0.1'; // 主机名或IP地址
// const port = 9999;
// const app = fastify();
app.listen({host,port});
const {promises: fs} = require('fs');
const fastify = require('fastify');
const flag = process.env.FLAG || 'zkaq{do_you_believe_this_is_flag?}';
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...`);
});
前端发送请求部分源码
<form id="form" oninput="result.textContent = ''">
<input name="guessflag" type="text" placeholder="zkaq{...">
<button type="submit">Guess!Guess!Guess! </button>
</form>
form.onsubmit = async (event) => {
event.preventDefault();
const guessflag = new FormData(form).get('guessflag');
const res = await fetch('/', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({[guessflag]: true}),
});
result.textContent = await res.text();
};
后端源码关键部分typeof req.body === 'object' && req.body[flag] === true
需要构造发送数据,能够同时满足object类型,还能够将flag作为key进行索引
bing搜索找到文章

fastify在遇到错误的时候,会将报错信息全部返回给用户。同时null在javascript中也是object类型。因此,可以将null值进行传递,通过报错带出flag

zkaq{S0metime_Empty_1s_FU11}
科目四
交通安全题目

直接定位到成功答题的结果部分,解密部分在d()函数处

提取出flag解密部分js代码,拼接执行
c = {
p7: "U2Fs",
p3: "dGVk",
p11: "X18/",
p2: "t7E+",
p9: "7zQl",
p4: "G9eB",
p1: "PkJo",
p8: "aNil",
p13: "HFDK",
p6: "YpMu",
p10: "X50l",
p5: "6T8/",
p15: "XGTi",
p12: "S0PR",
p14: "uK1x",
p16: "7qc3",
p19: "ZP0v",
p17: "T85/",
p20: "BvsK",
p18: "YIxp",
p21: "L7cG",
p22: "wUO5MZrAF55bg2QlNBpeEbU=",
p23: "ZKAQCTF{",
p24: "thik",
p25: "do_y0ru",
p26: "true_1s_false?",
p27: "hhhhs",
p28: "yeahyeahyea",
};
t = (e = c, ["p7", "p3", "p11", "p2", "p9", "p4", "p1", "p8", "p13","p6", "p10", "p5", "p15", "p12", "p14", "p16", "p19", "p17","p20", "p18", "p21", "p22"].map((t => e[t])).join(""))
n = "ZKAQCTF{try_hack_it_hhh}";
sq.AES.decrypt(t, n, {
mode: sq.mode.CBC,
padding: sq.pad.Pkcs7
}).toString(sq.enc.Utf8)

答题完成应该也能拿flag

ZKAQCTF{d0_y0u_think_netw0rk_security_imp0rtant?}
诗和远方
前端sql语句泄露

搜索相关文章,发现利用点是jwt的经过md5加密后,进行sql注入

ffifdyop的MD5加密结果是276f722736c95d99e921722cf9ed621c,经过MySQL编码后会变成’or’6xxx,相当于select * from ‘admin’ where password=''or 1,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密。关键参数为md5(xx,true)

同时将获取到的secret key放入,验证jwt签名其实不用也行,因为sql注入的地方不验证jwt签名是否正确

sql注入成功后,成功获取到了keys表中的所有数据,即司机的签名

用司机的签名伪造jwt token,获得flag

zkaq{DuduDu_1etS_9o_to_P0etry_@nd_distance!}
为了部落!
页面给出提示url

访问nothing路径出现报错,对应的服务器为django搭建,启动debug模式

google搜索

查看相关文章,进行复现,中间web登录界面的密码泄露部分没有复现。有点困惑,但是可以直接用这个密码登录

最后进行xxe实体引用,要修改exp如下
<!DOCTYPE x [ <!ENTITY foo SYSTEM "file:///flag"> ]><Arms><details>tw0%26foo%3b</details><video>tw0</video></Arms>
读取成功,拿下flag

ZKAQCTF{C1ash_0f_C1ans_1s_a_v3ry_c1assic_9am3}
misc
misc1-签到
题目如下
很明显,这是一段密文!你说对不对?逐流流随洋波波随逐波随流波洋逐波波流波逐随逐洋波波随波波流波逐洋波波逐流逐波流逐洋逐波随随流流流波洋波逐波逐随逐流流洋波随流逐随随随随洋波随流逐逐波逐流洋波逐波波流逐随随洋波逐随波随随流流洋波随流逐波随逐波洋波流波逐逐随波随洋波波逐流波波波流洋波流逐流随逐波逐洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随洋波波波随流随逐随浪波流逐逐浪波逐逐流浪波逐随波浪波流随波浪波流逐流浪波逐随流浪波流随逐浪波流逐波浪波流随随浪波流波随洪流随随浪波波流流洪流随波浪波流随流浪波波流流浪波流随流浪波流波随浪波随随随浪波流随逐浪波流波随浪波波流流浪波随随逐浪波流逐波浪波波流流浪波流随流浪波波波波浪波逐逐波浪波波流流浪波逐随逐浪波逐流流浪波波流流浪波波逐逐浪波逐逐随浪波流波波浪波波流流洪流随波浪波逐逐波浪波流波波浪波流流波
随波逐流一把梭

zkaq{crypt0_1s_st@rt_By_sUi_bo_Zhu_1iu}
来一杯tea
题目如下
import ast
def safe_import():
print("Look! this guy is using imports!???O.o")
def safe_call():
print("Look! this guy is using calls!???o.O")
class XiTiAiFu(ast.NodeTransformer):
def visit_Call(self, node: ast.Call) -> ast.AST:
return ast.Call(func=ast.Name(id='safe_call', ctx=ast.Load()), args=[], keywords=[])
def visit_Import(self, node: ast.AST) -> ast.AST:
return ast.Expr(value=ast.Call(func=ast.Name(id='safe_import', ctx=ast.Load()), args=[], keywords=[]))
def visit_ImportFrom(self, node: ast.ImportFrom) -> ast.AST:
return ast.Expr(value=ast.Call(func=ast.Name(id='safe_import', ctx=ast.Load()), args=[], keywords=[]))
def visit_Assign(self, node: ast.Assign) -> ast.AST:
return ast.Assign(targets=node.targets, value=ast.Constant(value=0))
def visit_BinOp(self, node: ast.BinOp) -> ast.AST:
return ast.BinOp(left=ast.Constant(0), op=node.op, right=ast.Constant(0))
something = input('good morning guy,Do you need something:').splitlines()[0]
box = ast.parse(something)
box = XiTiAiFu().visit(box)
ast.fix_missing_locations(box)
exec(compile(box, '', 'exec'), {'__builtins__': {}}, {'safe_import': safe_import, 'safe_call': safe_call})
google搜索关键词,找到相关文章。UIUCTF 2024 Astea题目

根据exp,拿下root

zkaq{m@ybe_Pyth0n_s3ndb0x_1s_unS@fe}
黑客儿传奇:两小时
nc连接题目后,显示的标题,关键词OCaml

找到了题目的语言,一个比较安全的语法限制代码

初步了解ocaml的语法,尝试遍历目录找到flag

zkaq{J41L3d_0000-C4mL@@!}
reverse
REVERSE - wait sometime
程序逻辑很简单,main调用noThing函数。关键点在&byte_2348这个地址上

另外还有printFlag函数,在进行一系列运算后,同样输出了&byte_2348这个地址的内容。但没有任何地方调用printFlag函数

patch程序,调用printFlag函数

运行获得flag

zkaq{flag_your_n3ver_g3t_by_program__}
todo & 参考文章
TSG CTF 2021 WriteUps | 廢文集中區 (maple3142.net)
PyJail – My Blog (jbnrz.com.cn)
CTFtime.org / Cryptoverse CTF 2023 / Misc/OJail / Writeup
https://junior.34c3ctf.ccc.ac/ writeup pizzagate - hard-ish 401 (github.com)
CTFtime.org / 34C3 CTF / JuniorCTF - 披萨门 / Writeup
待学习利用知识点
windows下文件包含的巧妙运用-----FindFirstFile_windows findfirstfile-CSDN博客


浙公网安备 33010602011771号