CTFshow-WEB-新年好?解题思路

0x00 前言

  • CTF 加解密合集

  • CTF Web 合集

  • 网络安全知识库

0x01 题目

题目名称:新年好? 分值:10 出题人:Firebasky 题目链接:https://a203e2c7-672a-42c9-af31-723d99890d57.challenge.ctf.show

访问首页,直接返回 app.js 源码。

复制代码
const express = require('express');
const fs = require('fs');
const flag = require('./flag')
const app = express();
​
app.get('/flag', function (req, res) {
    function getflag(flag) {
        res.send(flag);
    }
    let delay = 10 * 1000;
    if (Number.isInteger(parseInt(req.query.delay))) {
        delay = Math.max(delay, parseInt(req.query.delay));
    }
    const t = setTimeout(getflag, delay, flag);
    setTimeout(() => {
        clearTimeout(t);
        try {
            res.send('Timeout!');
        } catch (e) {
​
        }
    }, 1000);
});
app.get('/', function (req, res) {
    res.set('Content-Type', 'text/javascript;charset=utf-8');
    res.send(fs.readFileSync('./app.js'));
});
​
app.listen(3000, '0.0.0.0', () => {
    console.log('Start listening')
})

0x02 Write Up

访问靶场首页,页面直接输出完整 js 源码,重点看两处setTimeout。

复制代码
const t = setTimeout(getflag, delay, flag);
setTimeout(() => {
    clearTimeout(t);
    try {
        res.send('Timeout!');
    } catch (e) {
​
    }
}, 1000);

setTimeout 语法:setTimeout(回调函数, 延迟毫秒, 参数)。延迟时间到达后,执行回调,后续参数会传给回调函数。 代码逻辑:

  1. 访问/flag路由,读取 GET 参数delay,默认 delay=10000ms;如果传入合法整数 delay,取默认值和传入值的较大者。

  2. 开启定时器 t,delay 毫秒后执行 getflag,getflag 会直接把 flag 返回给页面。

  3. 同时开启第二个定时器,1000 毫秒后执行,清除定时器 t,页面返回 Timeout!。

正常情况下,delay 最小是 10000ms,大于 1000ms。第二个定时器会先触发,clearTimeout(t)取消 getflag 执行,页面输出 Timeout!,拿不到 flag。

知识点:Node.js 中 setTimeout 的延时参数使用32 位有符号整数 ,取值上限2147483647。当传入数字 > 2147483647,会发生整数溢出,数值截断,实际延时会变成一个很小的值。

我们传入delay=2147483648,这个数字超出上限,溢出后实际延时小于 1000ms。getflag 会优先执行,在 clearTimeout 执行之前返回 flag。

构造 Payload 访问: https://a203e2c7-672a-42c9-af31-723d99890d57.challenge.ctf.show/flag?delay=2147483648

页面直接返回 flag: {"FLAG":"ctfshow{496d2e3e-d6d0-4840-92c9-ac6c4df5a47f}"}

相关推荐
hasty3 小时前
返回一个文件,为何越过整个目录?Khoj 静态资源路由的安全边界
数据库·安全
兢谨网安4 小时前
Web应用渗透测试方案
网络·网络安全
云杂项5 小时前
A Survey of Privacy Attacks in Machine Learning(个人笔记)
人工智能·安全·机器学习
其实防守也摸鱼5 小时前
内网安全防护实践:从攻击视角理解防御要点
java·前端·安全·架构·自动化·nps
treesforest5 小时前
网络安全中的IP地址查询:从日志里的一条线索到溯源的关键证据
网络·web安全·php
未来之窗软件服务6 小时前
自考大学★信息安全●简答题—东方仙盟
安全·web安全·仙盟创梦ide·东方仙盟
XLYcmy6 小时前
基于图神经网络的物联网固件漏洞静态挖掘技术方案 上
神经网络·物联网·网络安全·二进制·elf·漏洞检测·固件
UCloud_TShare6 小时前
从DeepSeek Elastic Compute到UCloud Agent Sandbox:构建安全、可控的Agent执行环境
安全
xbzb6 小时前
Linux SELinux 安全加固与标签排错手册
linux·运维·安全