1. 项目概述从零到一构建你的Web安全信息收集实战框架刚接触CTFCapture The Flag的新手尤其是面对Web安全方向时最容易感到迷茫的往往不是复杂的漏洞利用而是第一步——信息收集。很多人拿到一个靶机地址除了用浏览器打开看看就不知道下一步该做什么了。CTFshow的Web入门1-20题正是针对这个痛点设计的“新手训练营”它系统地、由浅入深地引导你建立一套完整的信息收集思维和操作流程。这不仅仅是解20道题更是为你未来的安全学习打下坚实的地基。我花了些时间把这20道题从头到尾又复盘了一遍并结合多年在渗透测试和CTF比赛中的经验整理出了这份通关复盘。核心目标不是给你一份“抄了就能过”的答案而是带你理解每一道题背后考察的“知识点”和“思维方式”。为什么这道题要扫目录那道题为什么要看响应头我会把这些“为什么”讲清楚。同时我会附上一份我实战中高频使用、经过验证的“信息收集全工具清单”并告诉你每个工具在什么场景下用、怎么用最有效以及一些工具书上不会写的“坑”和技巧。无论你是完全零基础的网络安全爱好者还是计算机相关专业想入门安全的学生甚至是已经有一些基础但想系统梳理信息收集技能的同行这份复盘都能帮你建立起清晰、可复现的实战路径。我们不止步于解题更要掌握解题的“渔”。2. 核心思路拆解信息收集的“洋葱模型”在深入具体题目之前我们必须先建立顶层认知。信息收集不是胡乱地用工具扫一遍而是有层次、有步骤的“剥洋葱”过程。我将其归纳为“由外及内、由表及里”的四层模型CTFshow的这20题完美地覆盖了这四层。2.1 第一层表面信息探测第1-5题这是最外层目标是不触发任何防护机制的情况下获取尽可能多的公开信息。就像侦探调查先看目标的长相、穿着、公开言论。考察点HTTP基础、前端源码分析、基础工具使用。核心动作查看网页源代码CtrlU、使用浏览器开发者工具F12、分析请求与响应。思维关键养成“右键查看源代码”和“F12打开控制台”的第一反应。很多提示如注释、隐藏表单、JS代码都藏在这里。2.2 第二层服务指纹与架构识别第6-10题深入到服务器和应用程序本身。目标是回答目标用什么技术搭建的考察点HTTP响应头分析、常见服务默认页面、文件扩展名、中间件识别。核心动作分析HTTP响应头Server, X-Powered-By等、访问常见默认文件或路径如robots.txt,.git/,index.php.bak、使用工具进行轻量级扫描。思维关键识别技术栈如PHP/Java、Nginx/Apache能极大缩小漏洞搜索范围。例如看到X-Powered-By: PHP/7.2.24就要立刻想到PHP相关漏洞。2.3 第三层敏感目录与文件发现第11-15题这一层开始主动探测隐藏内容。目标是发现那些没有直接链接但可能存在的后台、备份文件、配置文件、数据文件等。考察点目录遍历、备份文件命名规律、常见敏感文件清单、工具自动化扫描。核心动作使用目录扫描工具如dirsearch, gobuster、尝试常见备份文件名index.php~,.bak,.swp、尝试路径穿越../。思维关键结合第二层识别的技术栈来使用针对性的字典。扫PHP网站和扫Java网站的字典侧重点完全不同。2.4 第四层协议扩展与非常规入口探测第16-20题这是最内层考察对Web服务周边协议和非常规信息泄露点的了解。目标是找到那些容易被忽略的“边门”。考察点DNS记录查询、子域名枚举、端口扫描、源码泄露如.git、API接口探测。核心动作使用综合信息收集工具、查询网络空间测绘平台、分析非常规文件泄露。思维关键目标不是一个孤立的IP和端口。它的子域名、历史DNS记录、关联的云服务都可能成为突破口。要有“攻击面”思维而不仅仅是“一个网站”思维。这四层模型将贯穿我们后续的详细复盘。带着这个模型去看每一道题你会清楚它训练的是你哪一方面的能力。3. 实战复盘1-20题核心考点与操作精讲下面我将按照题目顺序结合“洋葱模型”详细拆解每一关的核心解法、背后的原理以及我踩过的坑。我会提供多种解法并解释为什么这种解法有效。3.1 第1-5题表面信息与基础HTTP第1题签到题考点最基本的查看页面源码。操作打开题目链接按F12或右键查看页面源代码。Flag通常以注释形式直接写在HTML里。心得这是培养条件反射的第一步。任何Web题不管多难先看源码和网络请求永远不会错。第2题文件上传绕过基础考点前端JS验证绕过。操作页面有一个上传表单但选择非图片文件时会弹出JS警告。解法1直接删除或禁用该上传按钮的onclickJS事件在开发者工具的元素面板里修改。解法2将恶意文件后缀改为.jpg上传同时用Burp Suite拦截请求再修改回.php。原理剖析前端验证JS验证仅为了用户体验数据传输到服务器前可以被轻易篡改。真正的安全校验必须在服务器端进行。踩坑记录新手常纠结于如何让前端通过验证其实思路应该是“如何绕过前端直接与服务器对话”。Burp Suite这类代理工具是必备的。第3题Cookie与本地存储考点浏览器本地存储机制。操作按F12打开开发者工具查看“应用程序”Application标签页。在“本地存储”Local Storage或“会话存储”Session Storage或Cookie中查找名为flag或类似键名的值。思维延伸信息不仅存在于服务器返回的HTML还可能被前端脚本存储在客户端。localStorage.setItem(key, value)是常见操作。第4题响应头信息泄露考点从HTTP响应头中获取信息。操作打开题目链接按F12进入“网络”Network标签刷新页面点击第一个文档请求查看“响应头”Response Headers。寻找像flag、ctfshow这样的字段或者X-Flag、Custom-Header等自定义头。工具化在命令行下可以用curl -I http://xxx来快速获取响应头。-I参数表示只显示头部信息。重要提示Server、X-Powered-By、Set-Cookie这些标准头也常泄露服务器版本信息是后续漏洞利用的关键。第5题基础目录遍历考点访问网站根目录下的特定文件。操作题目提示“flag在根目录下”。尝试访问/flag、/flag.txt、/flag.php。通常就是/flag。为什么是根目录在Web安全中“根目录”通常指网站应用的根目录即域名直接对应的路径。通过拼接路径来访问非预期文件是目录遍历攻击的基础。3.2 第6-10题指纹识别与源码泄露第6题PHP信息泄露考点PHP配置不当导致的信息泄露。操作尝试访问/phpinfo.php。这是一个标准的PHP文件如果服务器上存在且未禁用会输出巨量的服务器配置信息包括环境变量。Flag可能藏在$_SERVER环境变量里。实战意义phpinfo()是黄金信息源能拿到绝对路径、PHP版本、加载的扩展等对后续漏洞利用至关重要。但在真实渗透中很少有这么明显的漏洞需要结合其他信息猜测路径。第7题备份文件泄露考点常见备份文件后缀。操作尝试访问index.php的备份文件如index.php.bak、index.php~、index.php.swpvim编辑器临时文件。本题通常是index.php.bak。备份文件字典.bak,.old,.temp,~,.swp,.swo,.orig,.backup。养成对每个发现的关键文件都尝试这些后缀的习惯。第8题版本控制源码泄露.git考点.git目录未做访问限制。操作访问/.git/目录如果返回403或目录列表则证明存在。然后可以使用工具GitHack或dvcs-ripper来完整拉取源码仓库。本题往往不需要完整拉取访问/.git/config或/.git/HEAD就能看到提示。原理与风险.git目录包含了代码的所有版本历史。泄露它意味着攻击者可以恢复出完整的源代码包括数据库配置、API密钥等硬编码的敏感信息。这是极其高危的漏洞。工具使用要点使用GitHack.py时注意Python环境。命令通常为python GitHack.py http://xxx/.git/。它会自动重建项目文件。第9题SVN源码泄露考点Subversion版本控制文件泄露。操作尝试访问/.svn/目录或/.svn/entries文件。SVN会在每个目录下生成一个.svn文件夹包含版本信息。同样有工具svnExploit或dvcs-ripper可以利用。与.git的区别SVN是集中式版本控制其.svn目录包含的信息可能不如.git丰富但同样能泄露源码。在企业旧项目中可能遇到。第10题DS_Store文件泄露考点macOS系统自动生成的隐藏文件泄露目录结构。操作访问/.DS_Store。这个文件由macOS的Finder创建用于存储文件夹的自定义属性如图标位置但它会记录该目录下的文件名。通过解析这个文件可以窥探目录列表。工具解析可以使用Python脚本ds_store_exp来解析.DS_Store文件列出目录内容。命令如python ds_store_exp.py http://xxx/.DS_Store。注意事项这只在网站管理员使用macOS开发并疏忽上传时才会发生。属于比较小众但确实存在的泄露点。3.3 第11-15题敏感路径扫描与API探测从这部分开始手动猜测效率变低需要引入自动化扫描工具。第11题robots.txt协议考点robots.txt文件泄露敏感路径。操作访问/robots.txt。这个文件用于告知搜索引擎爬虫哪些目录可以抓取哪些不可以。管理员有时会把后台路径、数据目录等写在Disallow里反而成了我们的“指路牌”。内容示例User-agent: * Disallow: /admin/ Disallow: /flag.php Disallow: /backup/直接访问/flag.php即可。思维拓展robots.txt不是安全措施而是建议。任何用户都可以访问其中Disallow的路径。第12题PHP代码审计与参数传递考点通过GET参数传递数据代码逻辑简单。操作题目页面可能有一段PHP代码提示比如$flag hidden_flag; if ($_GET[key] secret) { echo $flag; }那么只需要访问http://xxx/?keysecret即可。入门代码审计这是最简单的代码审计理解参数如何影响程序输出。为后续复杂的SQL注入、命令执行打下基础。第13题目录扫描基础考点使用工具发现隐藏目录或文件。操作使用dirsearch或gobuster进行扫描。dirsearch命令python3 dirsearch.py -u http://xxx -e php,html,js,bak,txtgobuster命令gobuster dir -u http://xxx -w /path/to/wordlist.txt -x php,txt,html字典选择初学者可以使用工具自带的common.txt或directory-list-2.3-small.txt。本题扫描后通常会发现一个如/secret/或/hidden/的目录进去后找到flag。速率控制警告在实战或打比赛时务必使用-t线程和--delay参数控制扫描速度避免把站点扫崩或触发WAF封禁。例如dirsearch -u http://xxx -e php -t 10 --delay 0.5。第14题端口扫描与Web服务发现考点Web服务不一定运行在80/443端口。操作题目可能只给了一个IP没有端口。需要使用端口扫描工具。nmap命令nmap -sS -p 1-65535 靶机IPTCP SYN扫描全面但慢快速扫描nmap -sS -p 80,81,443,8000,8080,8443 靶机IP扫描常见Web端口发现后如果发现8080端口开放则访问http://靶机IP:8080。进阶思考除了HTTPHTTPS443、Tomcat8080、WebLogic7001、Jenkins8080等都是常见的Web服务端口。第15题子域名枚举考点一个主域名下可能存在多个子域名应用扩大攻击面。操作字典爆破使用工具如subfinder、amass或gobuster的dns模式。gobuster dns -d example.com -w subdomains-top1million-5000.txt网络空间搜索引擎使用fofa.so、shodan.io或zoomeye.org。搜索语法如domainctf.show或host.ctf.show。证书透明度日志使用crt.sh网站查询为*.example.com颁发的SSL证书可以发现子域名。本题场景题目可能告诉你flag在某个子域名下如flag.ctf.show。你需要通过枚举发现它并访问。3.4 第16-20题综合信息收集与协议利用第16题DNS记录查询考点通过DNS解析历史记录发现关联资产。操作A记录/MX记录/NS记录使用nslookup或dig命令。dig example.com ANY可以尝试获取所有记录。DNS历史查询使用viewdns.info、securitytrails.com等网站查询域名的历史DNS记录可能发现已下线的测试域名如test.example.com,dev.example.com这些域名可能依然解析到老IP。区域传输理论上如果DNS服务器配置不当可以使用dig axfr ns1.example.com example.com尝试区域传输获取所有子域名记录。但现实中极少成功。本题思路Flag可能藏在某个不起眼的TXT记录或历史解析记录指向的IP的服务里。第17题默认凭据与弱口令考点服务或应用部署后未修改默认账号密码。操作通过之前的扫描发现了一个后台登录入口如/admin/、/wp-login.php。尝试常见默认凭据。例如路由器/设备admin/admin,admin/password,admin/123456Tomcat Manager:tomcat/tomcat,admin/adminJenkins:admin/admin(早期版本)WordPress:admin/admin工具辅助可以使用hydra或medusa进行爆破但本题通常设计为简单的默认口令。安全启示这是内网渗透和IoT设备攻击中最常见的入口之一。第18题API接口探测与未授权访问考点RESTful API或其他接口未做鉴权。操作扫描常见API路径如/api/,/v1/,/graphql,/swagger-ui.html(OpenAPI文档)。使用浏览器插件如Postman或命令行工具curl测试接口。尝试GET/POST/PUT/DELETE等HTTP方法。例如访问/api/users可能返回用户列表/api/flag可能直接返回flag。本题示例访问http://xxx/api.php?actiongetFlag可能直接返回结果。第19题源代码压缩包泄露考点网站源码打包文件被遗留在Web目录。操作尝试访问常见压缩包文件名如/website.zip,/src.rar,/backup.tar.gz,/wwwroot.7z。也尝试结合域名或项目名如/ctfshow.zip。发现后处理下载并解压在源码中搜索flag、ctfshow、password、key等关键词。grep -r flag ./是Linux下的好帮手。关联风险源码中可能包含数据库配置文件、硬编码的API密钥、加密密钥等危害极大。第20题综合信息收集大挑战考点对前面所有知识点的综合运用。操作没有固定套路需要你像侦探一样串联线索。复盘所有信息重新检查之前步骤收集的所有信息响应头、源码注释、扫描出的目录和文件、子域名、端口。尝试关联发现的某个子域名是否对应新的端口源码注释里提到的文件名是否在扫描列表里robots.txt里Disallow的路径是否真的无法访问有时是误导善用搜索在已下载的备份文件或泄露的源码中用文本编辑器或grep进行全局搜索。思考非常规点有没有.htaccess文件有没有/phpmyadmin/或/adminer.php数据库管理入口有没有/cgi-bin/目录心态这道题旨在模拟真实环境中信息收集的复杂性和不确定性。耐心和细致是关键。4. 信息收集全工具清单与实战心法工欲善其事必先利其器。下面这份清单是我多年积累和筛选的结果涵盖了从简单到进阶的各个场景。我会给出工具名、主要用途、一个典型命令示例以及最重要的“实战心法”。4.1 浏览器与代理工具你的眼睛和手浏览器Chrome/Firefox开发者工具用途查看源码、分析网络请求、调试JS、查看存储。心法F12是你的主武器。网络Network标签要始终打开查看每一个请求和响应。学会使用“搜索”CtrlShiftF在整个加载的资源中查找关键词。Burp Suite Community用途HTTP代理、请求拦截与重放、漏洞扫描有限、Intruder爆破。典型操作配置浏览器代理到127.0.0.1:8080在Burp中开启拦截Intercept on修改请求。心法Repeater模块用于手动测试和调试单个请求Intruder用于自动化参数爆破Scanner社区版功能弱主要用于主动扫描一些简单问题。学会使用Match and Replace规则自动修改请求头。Postman用途API接口测试、构造复杂请求、自动化测试集合。心法比Burp更专注于API调试。适合对已知API进行系统性的参数测试和文档化。可以和环境变量、脚本联动。4.2 扫描与枚举工具你的雷达dirsearch用途目录和文件扫描速度快字典丰富。命令python3 dirsearch.py -u http://target -e php,html,js,bak,txt,json -t 20 --delay 1心法-e指定扩展名很重要根据目标技术栈调整。--delay和-t线程数必须设置防止被封。结果输出清晰适合新手。gobuster用途目录/文件扫描、子域名枚举、虚拟主机枚举。命令目录gobuster dir -u http://target -w /usr/share/wordlists/dirb/common.txt -x php,txt命令DNSgobuster dns -d example.com -w subdomains-top1million-5000.txt心法Go语言编写速度快。功能比dirsearch多但输出格式稍显杂乱。dir模式用-x加扩展名dns模式需要指定字典。nmap用途端口扫描、服务与版本探测、操作系统识别。命令快速nmap -sV -sC -O -T4 target-sV版本探测-sC默认脚本-O系统识别命令全端口nmap -p- -sS -T4 target-p- 扫描所有65535端口心法信息收集之王。-sC运行默认脚本非常有用能自动识别HTTP标题、robots.txt等。-p-全扫很慢先扫常见端口。将结果输出为XML或Grepable格式便于后续处理nmap -oA output target。subfinder/amass用途子域名枚举聚合多种数据源DNS证书搜索引擎等。命令subfindersubfinder -d example.com -o subs.txt命令amassamass enum -d example.com -o subs.txt心法amass更强大但更慢subfinder轻快。两者结合使用效果最佳。记得将结果去重sort -u subs.txt final_subs.txt。4.3 特定漏洞利用与辅助工具你的特种装备GitHack用途利用.git文件夹泄露还原完整源码。命令python GitHack.py http://target/.git/心法运行后会在本地生成一个目录里面就是恢复的源码。立刻搜索敏感信息。ds_store_exp用途解析.DS_Store文件列出目录内容。心法小众但精准的工具。确认存在.DS_Store后使用。whatweb用途快速识别网站技术栈CMS、框架、服务器、语言等。命令whatweb http://target -v心法信息收集第一步快速指纹识别。-v输出详细信息。结果中的版本号是后续搜索漏洞的关键。wkhtmltopdf用途将网页转换为PDF。在某些CTF题中可能考察服务端用此工具转换网页时产生的漏洞如SSRF、文件读取。心法这不是常规扫描工具但知道它的存在和常见漏洞模式如file://协议读取本地文件很重要。4.4 在线平台与资源你的情报库FOFA/Shodan/ZoomEye用途网络空间搜索引擎通过特征搜索全球联网设备。心法学习搜索语法是核心。FOFAtitle后台管理 countryCNbodythinkphpicon_hash-xxx。Shodanhttp.title:Apache Tomcatport:3389。用于找特定资产、找同类漏洞目标、收集目标子域名/IP段。crt.sh用途查询SSL证书透明度日志发现子域名。心法搜索%.example.com可以找到所有为该域名及其子域名颁发的证书记录非常有效。Wayback Machine用途网站历史快照存档。心法寻找被删除的页面、旧的接口、历史版本中泄露的信息。有时当前页面没有但历史快照里有宝贝。4.5 字典与词库你的弹药工具再强没有好的字典也白搭。信息收集的深度很大程度上取决于字典的质量。Seclists必装词库。包含用户名、密码、目录、子域名等海量字典。路径通常为/usr/share/seclists/或/SecLists/。fuzzdb另一个著名的攻击模式与字典项目。自定义字典在长期实战中根据目标行业如教育、政府、金融和技术栈Spring, Laravel, Django积累自己的专属字典效率倍增。核心心法总结手动优先工具辅助不要一开始就无脑扫。先用手动浏览、查看源码、分析请求对目标有个感性认识再用工具进行补充和深化。控制节奏避免封禁扫描时务必设置延迟和线程数。--delay 1或-t 10是你的朋友。激进扫描等于告诉对方“我来打你了”。结果关联形成闭环A工具扫出的一个路径用B工具去测试响应头里发现的版本号去漏洞库搜索子域名发现的IP加到nmap扫描列表里。信息要串联起来分析。整理归档建立知识库对每个目标建立一个文件夹把扫描结果、截图、笔记都放进去。使用Obsidian或Notion这样的工具记录你的攻击路径和发现这对复盘和提升至关重要。5. 常见问题与排查技巧实录在实际操作和信息收集过程中你会遇到各种各样的问题。这里记录一些高频问题和我的解决思路。5.1 工具安装与运行问题问题运行Python脚本如dirsearch报错ModuleNotFoundError: No module named xxx。排查这是缺少Python依赖库。通常项目README会写依赖要求。解决使用pip安装。pip install -r requirements.txt如果项目有该文件。或手动安装pip install requests colorama。建议为安全工具创建独立的Python虚拟环境避免污染系统环境。问题Go工具如gobuster下载后无法执行。排查在Linux/Mac上可能需要添加执行权限chmod x gobuster。或者通过Go语言安装go install github.com/OJ/gobuster/v3latest安装后二进制文件通常在~/go/bin/目录下。解决确保文件有执行权限并且其所在目录在系统的PATH环境变量中。5.2 扫描结果分析与误报处理问题目录扫描工具返回大量403 Forbidden或404 Not Found如何判断哪些是有价值的排查状态码200成功301/302重定向跟进403禁止访问可能路径存在但无权限值得记录500服务器错误可能触发漏洞。响应长度工具通常会显示响应长度。对比404页面的长度如果某个404路径的长度与其他不同可能是个自定义404页面暗示路径存在但被处理了值得手动访问看看。手动验证对任何看起来可疑的路径如/admin/,/backup/,/api/无论返回什么状态码都手动在浏览器或Burp里访问一下。解决不要只看状态码。结合长度、响应内容有时会返回不同的错误信息综合判断。使用工具的--exclude-length或-b参数过滤掉特定长度的响应减少干扰。问题扫描时IP被屏蔽或WAF拦截。排查请求突然全部超时或返回统一的拦截页面如Cloudflare验证。解决降低频率大幅增加--delay减少-t线程数。更换UA使用-H User-Agent: Mozilla/5.0...参数伪装成普通浏览器。使用代理池对于重要目标考虑使用付费代理或TOR网络轮换IP。调整扫描路径使用更小、更精准的字典避免“狂轰滥炸”。5.3 信息关联与突破口选择问题收集了一堆信息子域名、端口、文件感觉杂乱无章不知道下一步该做什么。排查缺乏分析框架。解决按照“洋葱模型”或“资产-端口-服务-应用-漏洞”的层次进行梳理。资产清单列出所有发现的IP和域名。端口-服务映射对每个IP列出开放的端口及对应的服务nmap结果。Web应用深度分析对每个Web服务80,443,8080...进行深入信息收集指纹、目录、源码泄露。优先级排序攻击面大的如Java反序列化端口、版本旧的、有已知漏洞的、是管理后台的优先进行漏洞测试。工具辅助可以用Spreadsheet或Obsidian的双向链接功能来可视化这些关联。5.4 特定场景技巧场景目标只有IP没有域名。技巧反查域名。用nmap的-sL列表扫描或在线工具如ip138.com查询该IP绑定了哪些域名。可能发现虚拟主机。场景目标使用了CDN如Cloudflare隐藏了真实IP。技巧查询历史DNS记录CDN是后来加的。寻找子域名特别是mail.、dev.、test.等可能未接入CDN的子域。让目标服务器对外发起连接如通过SSRF漏洞从其连接日志中获取真实IP。使用网络空间搜索引擎搜索特征性标题或Body内容可能找到真实IP。场景.git泄露利用工具执行后恢复的源码不完整或报错。技巧.git目录可能不完整。尝试手动访问/.git/index、/.git/logs/HEAD等关键文件有时可以直接从中找到文件名或提交信息。使用git fsck命令检查仓库完整性在本地恢复的目录里执行有时能修复一些问题。信息收集是一门艺术也是体力活。它没有太多高深的技术但极其考验耐心、细致和思维的发散性。CTFshow这20道入门题就像20个精心设计的训练关卡帮你把这项基本功固化成本能。当你再面对一个陌生的Web目标时你的大脑会自动浮现出这四层模型和对应的工具链从容不迫地开始你的“狩猎”。记住在安全的战场上信息优势就是最大的优势。这份复盘和清单只是一个起点真正的提升源于在每一个实际目标上的反复练习和总结。