CTFShow-web-vip/ 信息收集

CTFShow-web-vip/ 信息收集
28.7的博客Web安全基础关卡详解
web签到
核心考点
前端源码隐藏 + Base64简单加密(签到类题目常见考点,侧重基础信息获取)
解题详细步骤
- 访问目标页面:打开题目对应的Web页面,页面通常无直接显示的Flag。
- 查看前端源码:按下键盘快捷键
Ctrl+U(部分浏览器需右键点击页面空白处,选择“查看页面源代码”),打开页面HTML源码。 - 定位Base64字符串:在源码中搜索疑似加密内容(通常以
aHR0cHM6Ly...等Base64特征开头,或注释中标记flag相关的字符串)。 - Base64解码:将找到的Base64字符串复制到Base64解码工具(如在线工具Base64解码、本地工具Notepad++插件),解码后即可得到Flag。
原理与补充说明
- 前端源码是浏览器渲染页面的基础,开发者常将简单隐藏的Flag放在源码中(避免直接显示在页面),而Base64是一种基于64个可打印字符的编码方式,仅用于“编码”而非“加密”,目的是让特殊字符可传输/可显示,极易解码。
- 常见隐藏位置:HTML注释(
<!-- 注释内容 -->)、<script>/<style>标签内的闲置变量、标签属性(如data-flag="Base64字符串")。
web2
核心考点
前端JS渲染控制 + URL参数干预页面逻辑(侧重“参数绕过前端隐藏”的基础思路)
解题详细步骤
- 分析提示含义:
Ctrl+U = 源码 and js=0表示“查看源码”的同时,需通过js=0参数禁用或绕过页面的JavaScript逻辑。 - 构造URL访问:在原题目URL后拼接参数
?js=0(如原URL为http://xxx.com/web2,则改为http://xxx.com/web2?js=0),访问拼接后的地址。 - 查看源码获取Flag:按下
Ctrl+U查看修改参数后的页面源码,此时JavaScript对Flag的隐藏逻辑(如if(js===1) hideFlag())已失效,可直接在源码中找到Flag(如var flag = "xxx")。
原理与补充说明
- 部分Web页面会通过JavaScript动态控制内容显示(如加载后隐藏Flag、根据参数决定是否渲染Flag),
js=0是开发者预留的“禁用JS控制”的开关参数(类似调试模式),本质是利用URL参数对前端逻辑的干预。 - 若未加
js=0参数,直接查看源码可能仅看到被JS隐藏的占位符,而非真实Flag。
web3
核心考点
HTTP请求/响应包分析(抓包)+ 服务器回显隐藏信息(侧重“非页面显示区域”的信息获取)
解题详细步骤
- 准备抓包工具:打开抓包工具(如Burp Suite、Fiddler、Chrome开发者工具),确保工具已配置为监听当前浏览器的HTTP/HTTPS流量(Burp需设置代理,Chrome开发者工具直接按
F12进入“网络”面板)。 - 触发请求并抓包:在浏览器中访问题目页面,此时抓包工具会捕获到访问该页面的HTTP请求(Request)和服务器返回的响应(Response)。
- 分析响应包找Flag:
- 若用Burp Suite:在“Proxy -> HTTP history”中找到目标请求,点击查看“Response”标签,检查响应头(如
X-Flag、Flag字段)和响应体(即使页面无显示,响应体可能包含Flag文本)。 - 若用Chrome开发者工具:在“网络”面板找到目标请求(通常是第一个HTML请求),点击“响应”标签,直接查看服务器返回的完整内容,寻找Flag。
- 若用Burp Suite:在“Proxy -> HTTP history”中找到目标请求,点击查看“Response”标签,检查响应头(如
原理与补充说明
- 服务器的“回显”不仅包含页面显示的内容,还可能在响应头(用于传递配置信息)或响应体的注释/闲置区域藏有Flag,这些信息不会被浏览器渲染到页面上,只能通过抓包查看。
- 常见隐藏位置:响应头的自定义字段(如
X-Custom-Flag)、响应体的HTML注释、JSON响应中的隐藏键(如{"code":200,"data":{"flag":"xxx"}})。
web4
核心考点
robots.txt 文件信息泄露(侧重搜索引擎协议文件的安全风险)
解题详细步骤
- 理解
robots.txt作用:robots.txt是网站根目录下的搜索引擎协议文件,用于告诉搜索引擎“哪些页面可爬取,哪些不可爬取”,但同时也会泄露敏感路径。 - **访问
robots.txt**:在题目域名的根目录后直接拼接robots.txt(如原URL为http://xxx.com/web4,则访问http://xxx.com/robots.txt)。 - 提取Flag或线索:
- 若
robots.txt中直接包含Flag(如Disallow: /flag.txt或# Flag: xxx),可直接获取。 - 若包含敏感路径(如
Disallow: /admin、Disallow: /flag.html),访问该路径(如http://xxx.com/flag.txt)即可找到Flag。
- 若
原理与补充说明
robots.txt是公开可访问的文件(任何用户都能查看),开发者若在其中写入敏感路径或Flag,会直接导致信息泄露。- 常见
robots.txt泄露场景:禁止爬取后台目录(/admin)、禁止爬取备份文件(/backup),这些路径往往是后续解题的关键。
web5
核心考点
PHP源码文件泄露(.phps 格式)(侧重服务器配置不当导致的源码暴露)
解题详细步骤
- 理解
.phps文件:.phps是PHP源码展示文件,正常情况下,服务器会将.php文件解析为HTML输出,而.phps文件会被解析为“源码文本”(供开发者查看源码),若服务器未正确配置,用户可直接下载.phps文件查看完整源码。 - **访问
index.phps**:在题目页面的路径后拼接index.phps(如原URL为http://xxx.com/web5,则访问http://xxx.com/index.phps)。 - 获取Flag:访问后会看到
index.php的完整源码(或弹出下载对话框),在源码中搜索flag关键词(如$flag = "xxx";、echo "Flag: " . $flag;),即可找到Flag。
原理与补充说明
.phps文件的设计初衷是方便开发者分享/查看PHP源码,但若服务器未禁用.phps文件的访问权限(或未正确配置MIME类型),攻击者可通过访问.phps文件获取网站源码,进而分析漏洞。- 类似的PHP源码泄露格式还有
.php.bak(备份文件)、.php.txt(文本格式),本质都是服务器配置不当导致。
web6
核心考点
网站工作目录备份文件泄露(www.zip)(侧重开发者备份文件遗留的风险)
解题详细步骤
- 理解备份文件泄露:开发者常将网站的完整工作目录(如
www目录,包含所有页面源码、配置文件)打包为ZIP备份,若不小心将备份文件留在服务器根目录,会导致完整源码泄露。 - **访问
www.zip**:在题目域名的根目录后拼接www.zip(如访问http://xxx.com/www.zip),若文件存在,浏览器会提示下载。 - 解压并查找Flag:
- 下载
www.zip后,用解压工具(如WinRAR、7-Zip)解压,得到网站的完整目录结构。 - 浏览解压后的文件(优先查看
index.php、config.php、flag.php等核心文件),在源码中搜索flag关键词,找到Flag。
- 下载
原理与补充说明
- 常见的网站备份文件名:
www.zip、web.zip、site.zip、backup.zip、www_backup.zip,这些文件名是目录扫描工具(如dirsearch)的重点探测对象。 - 备份文件泄露的危害极大:攻击者可获取完整源码,分析数据库连接信息、加密逻辑等敏感内容,甚至直接找到Flag。
web7
核心考点
Git版本控制工具源码泄露(.git 目录)(侧重版本控制工具遗留的安全风险)
解题详细步骤
- 理解
.git目录:.git是Git版本控制工具的核心目录,包含网站的所有源码、提交记录、分支信息,若服务器未屏蔽.git目录的访问权限,攻击者可通过该目录恢复完整源码。 - 检测
.git目录是否存在:访问题目域名的根目录+.git(如http://xxx.com/.git),若显示目录列表或Git相关页面,说明存在泄露。 - 恢复源码并找Flag:
- 使用Git源码泄露利用工具(如
GitHack、Githacker),执行命令(如python GitHack.py http://xxx.com/.git/),工具会自动爬取.git目录下的文件,恢复完整源码。 - 查看恢复后的源码文件(如
index.php),搜索flag关键词获取Flag。
- 使用Git源码泄露利用工具(如
原理与补充说明
- Git是开发中常用的版本控制工具,若开发者直接将包含
.git目录的项目部署到服务器,且服务器未配置禁止访问.git目录(如Nginx/Apache的deny规则),会导致源码泄露。 - 泄露的
.git目录不仅包含当前源码,还包含所有历史提交记录,攻击者可通过提交记录分析代码变更,找到隐藏的敏感信息。
web8
核心考点
SVN版本控制工具源码泄露(.svn 目录)(侧重旧版本SVN的默认配置风险)
解题详细步骤
- 理解
.svn目录:SVN(Subversion)是另一种版本控制工具,.svn目录包含项目的源码、版本日志、配置信息,旧版本SVN(如1.6及以下)的.svn/entries文件会直接存储文件列表和部分源码。 - 检测
.svn目录:访问题目域名的根目录+.svn(如http://xxx.com/.svn),若能访问则说明存在泄露。 - 获取源码并找Flag:
- 使用SVN泄露利用工具(如
svnExploit、SvnDump),执行命令(如python svnExploit.py -u http://xxx.com/.svn/),工具会读取.svn/entries文件,下载所有源码文件。 - 查看下载的源码(如
index.php),搜索flag关键词获取Flag;或直接查看.svn/entries文件,部分情况下Flag会直接藏在该文件中。
- 使用SVN泄露利用工具(如
原理与补充说明
- 与Git类似,SVN的
.svn目录若暴露在服务器上,会导致源码泄露,旧版本SVN的风险更高(因为entries文件未加密)。 - 现代开发中SVN已逐渐被Git取代,但部分老旧项目仍在使用,需注意此类泄露场景。
web9
核心考点
Vim编辑器临时文件泄露(.swp 文件)(侧重开发者操作疏忽导致的源码泄露)
解题详细步骤
- 理解
.swp文件:Vim是Linux下常用的文本编辑器,编辑文件时会生成临时文件(.swp,即“swap file”),用于防止意外退出导致内容丢失。若开发者编辑index.php后意外退出(如断电、强制关闭),未删除.swp文件,服务器会暴露该文件。 - 访问
.swp文件:在题目页面的PHP文件后拼接.swp(如原文件是index.php,则访问http://xxx.com/index.php.swp),浏览器会提示下载该文件。 - 恢复源码并找Flag:
- 下载
index.php.swp后,在本地Linux环境(或Windows的WSL)中,使用Vim命令恢复源码:vim -r index.php.swp,执行后会生成原index.php文件。 - 打开恢复后的
index.php,搜索flag关键词获取Flag。
- 下载
原理与补充说明
- Vim临时文件的命名规则:编辑
filename时,临时文件为.filename.swp;若.filename.swp已存在,会生成.filename.swo、.filename.swx(依次类推),这些文件都可能泄露源码。 - 此类泄露完全是开发者的操作疏忽(未清理临时文件),服务器无需特殊配置,只要文件存在即可被访问。
web10
核心考点
HTTP Cookie隐藏信息(侧重客户端存储数据的信息提取)
解题详细步骤
- 理解Cookie作用:Cookie是服务器存储在客户端(浏览器)的小型文本数据,用于保存用户状态(如登录凭证、偏好设置),部分题目会将Flag直接存放在Cookie中。
- 查看Cookie:
- 方法1(Chrome浏览器):按
F12打开开发者工具 → 切换到“应用”(Application)面板 → 在左侧“存储”栏中找到“Cookie” → 点击题目对应的域名(如xxx.com),右侧会显示该域名下的所有Cookie键值对。 - 方法2(Firefox浏览器):按
F12打开开发者工具 → 切换到“存储”面板 → 左侧找到“Cookie” → 选择目标域名查看。
- 方法1(Chrome浏览器):按
- 提取Flag:在Cookie键值对中寻找与
flag相关的键(如flag、cookie_flag),其对应的值即为Flag(如flag=CTF{xxx})。
原理与补充说明
- Cookie是客户端可直接访问的数据(无需抓包,浏览器工具即可查看),开发者若将Flag存放在Cookie中,本质是“弱隐藏”,仅针对不了解Cookie的用户。
- 注意:Cookie可能有过期时间或域名限制,需确保在当前题目页面的域名下查看,避免查看其他域名的Cookie。
web11
核心考点
DNS解析记录信息收集(侧重子域名挖掘与隐藏记录)
解题详细步骤
- 理解DNS解析记录:DNS(域名系统)负责将域名转换为IP地址,同时存储多种记录(如A记录、CNAME记录、TXT记录、MX记录),部分题目会将Flag藏在TXT记录或子域名中。
- 查询DNS记录:
- 获取Flag:
- 若TXT记录中直接包含Flag(如
TXT "Flag: CTF{xxx}"),可直接获取。 - 若查询到子域名(如
flag.xxx.com),访问该子域名(http://flag.xxx.com),页面中通常会包含Flag。
- 若TXT记录中直接包含Flag(如
原理与补充说明
- DNS TXT记录常用于域名验证(如备案、邮箱验证),开发者可能为了方便,将Flag直接写入TXT记录;子域名则可能用于部署单独的Flag页面,不对外公开,仅通过DNS记录泄露。
- 进阶操作:使用子域名挖掘工具(如Layer子域名挖掘机、OneForAll)批量查询目标域名的子域名,扩大信息收集范围。
web12
核心考点
社会工程学(侧重公开信息收集与利用)
解题详细步骤
- 理解社会工程学:社会工程学不依赖技术漏洞,而是通过收集公开信息(如开发者信息、网站备案信息、社交账号),利用人的疏忽或信息关联获取Flag。
- 收集公开信息:
- 步骤1:查看网站页面细节(底部备案号、联系邮箱、版权信息、开发者署名)。
- 步骤2:查询网站备案信息(通过工信部ICP备案查询输入备案号,获取主办单位、负责人信息)。
- 步骤3:搜索联系信息(如将联系邮箱/手机号输入百度、微博、GitHub,查找关联的社交账号,获取更多个人信息)。
- 提取Flag:
- 若备案号中包含Flag(如备案号后6位为Flag),直接获取。
- 若社交账号资料中包含Flag(如GitHub个人简介、微博昵称包含Flag),提取即可。
- 若联系邮箱格式为
flag_xxx@xxx.com,邮箱前缀即为Flag。
原理与补充说明
- 社会工程学的核心是“信息关联”,开发者在不同平台使用相同的信息(如用备案手机号注册社交账号),会导致信息串联泄露。
- 常见公开信息来源:WHOIS域名查询(获取注册人邮箱/电话)、网站底部版权信息、社交媒体(微博、GitHub、知乎)、企业信息查询平台(天眼查、企查查)。
web13
核心考点
技术文档信息泄露(侧重公开文档中的敏感内容)
解题详细步骤
- 定位技术文档:技术文档通常存放在网站的特定路径,常见路径包括:
/docs、/doc、/documentation(通用文档目录)/api-doc、/api-docs(API接口文档)/help、/help-center(帮助中心文档)- 页面导航栏的“文档”“帮助”按钮(点击即可进入)。
- 访问技术文档:直接访问上述路径(如
http://xxx.com/docs),或通过页面导航进入文档页面。 - 查找Flag:
- 浏览文档内容,重点关注“示例代码”“接口参数说明”“配置说明”等板块(如API示例中包含
{"flag":"xxx"})。 - 查看文档的注释或隐藏章节(如PDF文档的页眉页脚、HTML文档的注释),Flag可能藏在其中。
- 若文档需要密码,尝试用之前收集的信息(如备案号、开发者姓名)作为密码,解锁后获取Flag。
- 浏览文档内容,重点关注“示例代码”“接口参数说明”“配置说明”等板块(如API示例中包含
原理与补充说明
- 技术文档的目的是方便用户/开发者使用,但若未对敏感内容(如测试用Flag、真实接口密钥)脱敏,会直接导致泄露。
- 常见泄露场景:API文档的测试参数中包含Flag、帮助文档的“常见问题”板块提及Flag、PDF文档的元数据(作者、标题)包含Flag。
web14
核心考点
社会工程学 + 目录扫描 + 后台登录逻辑(多技术结合的综合题型)
解题详细步骤
步骤1:社会工程学收集QQ账号:
- 访问题目页面,查找是否有QQ相关信息(如“联系我们:QQ 123456789”、QQ群二维码、QQ头像图片),记录QQ号(如
123456789)。 - 打开QQ客户端或QQ空间,搜索该QQ号,查看其个人资料(重点记录“所在地”,如“北京市”)。
- 访问题目页面,查找是否有QQ相关信息(如“联系我们:QQ 123456789”、QQ群二维码、QQ头像图片),记录QQ号(如
步骤2:目录扫描发现后台:
- 使用目录扫描工具(如dirsearch、御剑后台扫描工具),对题目域名进行扫描(命令示例:
python dirsearch.py -u http://xxx.com -e php,html)。 - 扫描结果中若出现
/admin、/manage、/backend等后台目录,记录该路径(如http://xxx.com/admin)。
- 使用目录扫描工具(如dirsearch、御剑后台扫描工具),对题目域名进行扫描(命令示例:
步骤3:访问后台并修改密码:
- 访问后台目录(
http://xxx.com/admin),若显示“忘记密码”或“修改密码”功能,点击进入。 - 按页面提示输入信息(如“用户名”为QQ号、“验证码”为QQ所在地“北京市”,或“新密码”为所在地拼音“beijing”),提交修改。
- 访问后台目录(
步骤4:登录后台获取Flag:
- 使用修改后的账号密码(用户名:QQ号,密码:所在地)登录后台。
- 后台页面中通常会有“Flag”模块、“个人中心”或“系统信息”板块,直接查看即可获取Flag。
原理与补充说明
- 本题是“技术+社会工程学”的结合,目录扫描解决“找到后台”的问题,社会工程学解决“获取登录凭证”的问题,核心是利用“QQ所在地”与“后台改密逻辑”的关联。
- 常见后台改密逻辑:用个人信息(手机号、所在地、生日)作为验证条件,开发者为了简化测试,常将公开信息作为验证条件,导致被利用。
web16
核心考点
目录扫描 + 参数枚举 + PHPINFO信息泄露(多步骤信息收集)
解题详细步骤
步骤1:目录扫描找到目标文件:
- 使用dirsearch工具扫描题目域名,设置扫描后缀为
php(命令示例:python dirsearch.py -u http://xxx.com -e php)。 - 扫描结果中若出现
tz.php(如http://xxx.com/tz.php),记录该文件路径。
- 使用dirsearch工具扫描题目域名,设置扫描后缀为
步骤2:参数枚举找到有效参数:
- 目标文件
tz.php可能需要参数才能触发特定逻辑,使用参数枚举工具(如Arjun、Burp Suite Intruder)对tz.php进行参数爆破。 - 工具配置:目标URL为
http://xxx.com/tz.php,枚举参数名(常见参数:act、id、page、func)。 - 若枚举到参数
act(访问tz.php?act=test时页面有响应变化),确定act为有效参数。
- 目标文件
步骤3:触发PHPINFO页面获取Flag:
- 尝试给
act参数赋值为phpinfo(访问http://xxx.com/tz.php?act=phpinfo),若页面显示PHPINFO信息(包含PHP版本、配置、环境变量等),说明触发成功。 - 在PHPINFO页面中搜索
flag关键词,Flag通常藏在以下位置:- “环境变量”板块(如
$_GET['flag']、$_SERVER['FLAG']) - “PHP Variables”板块(如
$_COOKIE['flag']) - 页面底部或注释区域。
- “环境变量”板块(如
- 尝试给
原理与补充说明
phpinfo()是PHP的内置函数,用于输出PHP的详细配置信息,开发者常将其作为调试工具(如if($_GET['act']=='phpinfo') phpinfo();),但忘记删除,导致信息泄露。- PHPINFO页面会暴露大量敏感信息(如服务器路径、已加载模块、环境变量),Flag通常直接写在环境变量或自定义配置中。
web17
核心考点
SQL数据库备份文件泄露(.sql 格式)(侧重数据库备份的安全风险)
解题详细步骤
理解SQL备份文件:开发者为防止数据库丢失,会定期将数据库内容导出为
.sql备份文件(包含表结构、数据记录),若备份文件留在服务器上,会导致数据库完整信息泄露。访问SQL备份文件:常见的SQL备份文件名包括:
backup.sql、db_backup.sql、sql_backup.sqldatabase.sql、db.sqlxxx_backup_2024.sql(带日期的备份文件)- 直接访问这些文件名(如
http://xxx.com/backup.sql),若文件存在,浏览器会提示下载。
解析备份文件找Flag:
- 下载
.sql文件后,用文本编辑器(如Notepad++、Sublime Text)打开,文件内容是SQL语句(如CREATE TABLE、INSERT INTO)。 - 搜索与
flag相关的表或字段:- 若存在
flag表(如CREATE TABLE flag (id int, flag varchar(255))),查看该表的插入语句(如INSERT INTO flag VALUES (1, 'CTF{xxx}')),括号中的值即为Flag。 - 若
users表或config表中包含flag字段(如INSERT INTO users VALUES ('admin', '123456', 'CTF{xxx}')),提取该字段值。
- 若存在
- 下载
原理与补充说明
- SQL备份文件泄露的危害极大,不仅能获取Flag,还能获取用户账号密码(如
users表的用户名和加密后的密码)、数据库配置信息,甚至可通过备份文件恢复完整数据库。 - 部分备份文件会压缩为ZIP格式(如
backup.sql.zip),需先解压再查看。
web18
核心考点
JS代码审计 + Unicode编码解码(侧重前端代码的隐藏逻辑与编码转换)
解题详细步骤
步骤1:查看JS代码:
- 按下
Ctrl+U打开页面源码,在<script>标签中找到JavaScript代码块(通常在<head>或<body>中,或通过src="xxx.js"引入外部JS文件,需点击该文件链接查看)。 - 若JS代码被压缩(如一行代码),可使用在线JS格式化工具(如JSFormatter)格式化,方便阅读。
- 按下
步骤2:识别Unicode编码:
- 在JS代码中寻找Unicode编码字符串,Unicode编码在JS中的格式为
\uXXXX(XXXX为16进制数,如\u0066对应字母f)。 - 示例:若JS代码中包含
var flag = "\u0063\u0074\u0066\u007b\u0078\u0078\u0078\u007d";,这串字符即为Unicode编码的Flag。
- 在JS代码中寻找Unicode编码字符串,Unicode编码在JS中的格式为
步骤3:Unicode解码获取Flag:
- 使用Unicode解码工具(如题目提示的Unicode中文转换),将Unicode字符串复制到输入框,点击“解码”。
- 解码后得到正常字符串(如上述示例解码为
ctf{xxx}),即为Flag。
经过unicode还原后
原理与补充说明
- Unicode编码的作用:在JS中表示特殊字符(如中文、符号)或隐藏字符串(避免直接显示
flag关键词),但编码规则是公开的,极易解码。 - 常见JS隐藏Flag的方式:Unicode编码、Base64编码、字符串拼接(如
var a = "ctf{"; var b = "xxx}"; var flag = a + b;),需结合代码审计识别。
web19
核心考点
前端加密密钥泄露 + HTTP抓包(侧重前端加密的局限性)
解题详细步骤
步骤1:分析前端加密逻辑:
- 按下
Ctrl+U查看页面源码,找到与“登录”“提交”相关的JavaScript代码(通常绑定在按钮的onclick事件上,如onclick="encryptAndSubmit()")。 - 阅读JS代码,定位加密函数(如
encryptAndSubmit()),在函数中寻找加密密钥(如var key = "1234567890abcdef";,key即为AES/DES加密的密钥)。 - 记录加密算法(如
AES-128-CBC)和加密参数(如IV向量var iv = "0000000000000000";),后续解密需用到。
- 按下
步骤2:抓包获取加密数据:
- 打开Burp Suite,配置浏览器代理,确保能捕获页面的HTTP请求。
- 在页面上输入任意账号密码(如
admin/123456),点击“登录”或“提交”按钮,Burp会捕获到提交数据的请求(通常是POST请求)。 - 在Burp的“Request”标签中,查看提交的加密数据(如
username=U2FsdGVkX1...&password=U2FsdGVkX1...),复制该加密数据。
步骤3:解密获取Flag或正确凭证:
- 使用对应加密算法的解密工具(如在线AES解密),输入加密数据、密钥、IV向量,选择正确的加密模式(如CBC)和解密方式(如Base64解码后解密)。
- 若解密后得到Flag(如
{"status":0,"flag":"CTF{xxx}"}),直接获取。 - 若解密后得到正确的账号密码(如
{"username":"admin","password":"correct123"}),使用该凭证登录页面,即可找到Flag。















