致刚学ctf的你
给刚入门的师傅们写一篇小文章,这里我参考之前实验室的传承,结合自身经历,把能写的全写了,望诸君共勉,由于我自己也挺菜的,然后最近又忙着考研有点赶,然后写的不好的地方体谅一下 一、什么是 ctf1、概念ctf 全称 Capture The Flag,意思就是指每一个题目里面有一个 flag 信息,拿到 flag 就意味着这一个题目的胜利 2、赛制CTF 通常包括了解题模式(Jeopardy)、攻防模式(Attack with Defense,AWD)、综合渗透(Integrated Security Warfare,ISW)。 解题模式:常见于线上选拔比赛,参赛队伍可以通过互联网或者现场网络参与,解决网络安全技术挑战,获取相应分值,类似于 ACM 编程竞赛、根据总分和时间来进行排名。通常会设置 一血 、 二血 、 三血 ,也即最先完成的前三支队伍会获得额外分值。此外,还有一种 “降分” 的计分规则,即在设置每道题目的初始分数后,根据该题的成功解答队伍数来逐渐降低该题的分值。这意味着当解答这道题的人数越多,那么这道题的分值就越低。最后会下降到一个保底分值后便不再下降。 攻防模式:...
Node.js EJS SSTI 专题——从模板注入到 RCE 原理解析
前言EJS(Embedded JavaScript)是 Node.js 生态中广泛使用的模板引擎。和 Python 的 Jinja2、PHP 的 Twig 不同,EJS 的模板编译方式非常”粗暴”——它直接把模板字符串拼接成一段 JavaScript 函数体,然后扔给 new Function() 执行。这意味着一旦攻击者能控制模板内容或编译选项,RCE 几乎是必然的。 EJS SSTI 和其他模板引擎的关键区别: 特性 EJS Jinja2 (Python) Twig (PHP) 底层实现 拼接 JS 字符串 → new Function() 解析 AST → 编译为 Python bytecode 编译为 PHP 代码 代码执行 <% %> 中是真正的 JS {{ }} 只能访问传递的变量 {{ }} 只能访问传递的变量 沙箱 无沙箱 有沙箱(需逃逸) 有沙箱 数据作用域 with(locals){} 或 var 赋值 独立的模板上下文 独立...
Node.js RCE 完全指南——从 eval 注入到绕过 getshell
前言Node.js 服务端代码如果直接将用户输入拼入 eval()、Function()、setTimeout() 等动态执行函数,后果和 PHP 的 eval($_GET['cmd']) 一样致命——攻击者可以执行任意系统命令。但 Node.js 的异步特性、模块系统、以及 require 的动态加载方式,使得 RCE 手法比 PHP 更加多样。 Node.js RCE 的杀伤链: 12345用户输入 → 进入 eval()/Function()/vm.run() → 获取 require 引用 → 加载 child_process 模块 → exec / spawn / execSync → 反弹 shell / 读 flag / 内网探测 本文从漏洞代码分析讲起,覆盖同步/异步命令执行、文件读写、反弹 shell、5 大类绕过手法,以及防御方案。 一、漏洞模式 —— 从 eval 注入开始1.1 经典漏洞代码123456789101112131415161718var express = require('ex...
JavaScript 原型链污染攻击专题——从基础原理到 CTF 全利用链
前言原型链污染(Prototype Pollution)是 JavaScript 特有的一种漏洞类型,根源在于 JS 基于原型的继承模型。当攻击者能够修改 Object.prototype 上的属性时,应用中所有对象都会继承被污染的属性,导致认证绕过、任意代码执行、拒绝服务等严重后果。 为什么原型链污染特别危险: 特性 影响 全局影响 修改 Object.prototype → 所有 {} 都受影响 持久性 一次污染,整个进程生命周期持续生效 隐蔽性 不直接修改目标对象,通过继承间接影响,代码审计难以发现 连锁反应 影响模板引擎、认证逻辑、配置读取等看似无关的模块 近年 CVE 一览: CVE 影响 CVSS 年份 CVE-2023-26136 tough-cookie 9.8 2023 CVE-2022-2421 express-validator 9.8 2022 CVE-2021-23440 set-value (npm) 9.8 2021 CVE-2021-23450 dojo 9.8 2021 ...
云安全基础与 CTF 利用——从元数据 SSRF 到对象存储攻防
前言云安全是一个庞大而复杂的话题,但对于 CTF 选手和渗透测试工程师来说,有一条非常经典的利用链贯穿了绝大多数云安全题目:SSRF → 元数据服务 → IAM 临时凭证 → 对象存储。 本文将从零开始,梳理这条攻击链的每一个环节——先讲清楚 IAM、EC2、S3、VPC、元数据这些核心概念是什么,再深入剖析元数据 SSRF 的实际利用方法,最后延伸到对象存储攻防、Lambda 函数注入、EBS 快照窃取等进阶议题。文中配有大量可直接运行的代码示例,涵盖 bash、python 和 aws-cli。 无论你是第一次接触云安全的新手,还是想系统整理知识体系的熟手,这篇文章都希望能帮到你。 一、核心概念速查1.1 IAM —— 云平台的门禁系统一句话:IAM = “谁是谁” + “谁能干啥”。 IAM(Identity and Access Management)是云平台里管理身份和权限的核心服务。你可以把它理解为整个云平台的门禁系统 + 权限登记表。没有 IAM,任何人在云上可以做任何事情——这是不可接受的。 IAM 的核心由四部分组成: 1.1.1 IAM 用户(Us...
Linux 提权技巧汇总——从 SUID 到容器逃逸
前言Linux 提权是渗透测试和 CTF 竞赛中最关键的环节之一。从拿到一个低权限 shell 到最终获取 root,中间涉及对系统配置、SUID 可执行文件、计划任务、容器环境等多方面的深入理解和利用。 本文系统地汇总了常见的 Linux 提权技巧:以 SUID 16 法为核心,逐条给出具体的利用命令和原理分析;同时覆盖 sudo 配置错误、capabilities 滥用、cron 任务劫持、Docker 容器逃逸等进阶场景。最后提供自动枚举工具速查和防御建议,方便在实际攻防中快速查阅。 一、SUID 提权 16 法SUID(Set owner User ID upon execution)是 Linux 中的一种特殊权限:当一个可执行文件带有 SUID 位(chmod u+s)时,任何用户执行该文件时都会以文件所有者的身份运行。如果文件所有者是 root,那么程序执行期间就拥有 root 权限。 查找系统中有哪些 SUID 文件: 1find / -perm -u=s -type f 2>/dev/null 以下是 16 种常见 SUID 可执行文件的提权方法。 1...
JavaScript 安全手册——从基础语法到漏洞利用技巧
前言JavaScript 是 Web 安全绕不开的语言——前端 XSS、Node.js 后端漏洞、原型链污染、沙箱逃逸、弱类型绕过……几乎每一种 Web 攻击面都涉及 JS。但很多安全研究者的 JS 基础是”边打边学”拼凑出来的,遇到 [] == ![] 这类反直觉行为时往往靠猜。 本文是一份面向安全研究者的 JS 速查手册,按主题组织——从函数定义、类型转换陷阱、异步编程到 Node.js 特有的 RCE 函数,每个知识点都附带可直接复制的代码示例。它不是 JS 入门教程,而是你在审计代码、写 exploit、分析 payload 时随手翻阅的参考。 一、函数1.1 不会自动执行的函数1234567891011121314151617181920// 函数声明——定义时不会执行,只有被调用时才执行function myFunction() { console.log("这是一个函数声明");}// 函数表达式——同样不会立即执行const myFunction = function() { console.log(...
Fastjson 反序列化漏洞利用专题
前言Fastjson 是阿里巴巴开源的一款高性能 Java JSON 解析库,广泛应用于国内互联网企业的 RPC 通信、微服务序列化等场景。其核心卖点是”快”,但在设计上,为了实现便捷反序列化而引入的 autoType 机制(即通过 @type 字段指定目标类型),使其天然具备调用任意类 setter/getter 的能力,这为漏洞利用提供了入口。 Fastjson 的反序列化漏洞利用分为两条主线: JNDI 注入路径:利用 Fastjson 的 @type 机制实例化 JNDI 相关类(如 JndiDataSourceLookup),触发远程类加载,达到 RCE。这是常规的 Fastjson 利用方式。 原生反序列化链路径:不依赖 JNDI 出网,利用 Java 原生反序列化的 “gadget chain”,结合 Fastjson 在序列化 Java 对象时自动调用 getter 的特性,最终触发 TemplatesImpl.getOutputProperties() 加载恶意字节码实现 RCE。 本文聚焦于原生反序列化链的完整利用过程,覆盖 Fastjson 1...
JS 沙箱逃逸专题——从内部运行时劫持到原型链污染
前言JavaScript 沙箱(Sandbox)是一种隔离执行环境,用于安全地运行不受信任的代码。在现代 Web 和边缘计算中,沙箱技术被广泛应用于: Cloudflare Workers —— 边缘函数运行时 Deno Deploy —— 基于 V8 隔离机制的云函数 vm2 / isolated-vm —— Node.js 服务端代码隔离 SES (Secure ECMAScript) —— 基于 Compartment 的硬隔离 QuickJS / Duktape —— 轻量级嵌入式 JS 引擎 Web Worker / iframe sandbox —— 浏览器端隔离 沙箱的核心目标是限制代码对危险 API 的访问(如文件系统 fs、进程管理 child_process、网络底层 net),但沙箱自身也是代码——实现中的漏洞可能导致逃逸。 本文从沙箱信息收集讲起,覆盖内部运行时劫持、原型链逃逸、构造函数利用、import 绕过等多种实战技巧。 一、沙箱基础与信息收集1.1 沙箱的实现层次123456789┌───────────────...
Git 泄露利用专题——从 .git 目录暴露到完整源码恢复
前言Git 泄露是指由于运维配置不当,Web 目录下的 .git 文件夹对公网暴露,攻击者可以直接下载整个 Git 仓库的元数据,进而恢复网站完整的源代码、历史提交记录、配置文件中的敏感信息(数据库密码、API 密钥等)。 这类漏洞在 CTF 和渗透测试中非常常见,且利用工具成熟——自动化工具可以在数分钟内完成从扫描到完整源码恢复的全过程。 核心危害: 恢复网站所有源代码(包括未在 Web 层直接暴露的后端逻辑) 获取 .git/config 中的数据库密码、API Token 等凭据 通过 git log + git reflog 恢复曾经提交、后来被删除的敏感文件 对比历史版本,发现开发者在修复漏洞前留下的”有漏洞版本” 获取 .gitignore 中列出的敏感文件名,再针对性访问 一、Git 内部对象模型了解 Git 的存储结构是理解”为什么能通过 .git 目录恢复完整源码”的关键。 1.1 四种核心对象1234567891011┌──────────────────────────────────────────────────────────────┐│ ...