别再只盯着F12了:盘点CTFshow Web信息搜集那些“反直觉”的解题思路与冷知识
CTFshow Web信息搜集突破常规思维的9种高阶技巧与冷知识当你在CTF竞赛中遇到Web信息搜集题时是否曾陷入F12CtrlU的思维定式本文将从非常规角度剖析那些容易被忽略的解题路径结合JavaScript绕过、DNS记录挖掘、前端加密逆向等实战案例带你突破信息搜集的认知边界。1. JavaScript防护机制的七种破解之道大多数选手遇到JS防护时第一反应是尝试禁用JavaScript或查看源代码。但现代Web题目往往设置了多重防护机制需要更深入的绕过技巧。1.1 事件监听器的深度绕过以CTFshow web2为例题目通过以下代码禁用开发者工具window.oncontextmenu function(){return false}; window.onselectstart function(){return false}; window.onkeydown function(){ if(event.keyCode123){event.keyCode0;event.returnValuefalse;} };突破方案对比表方法适用场景操作步骤成功率浏览器无头模式所有JS拦截chrome --headless --disable-gpu95%调试器动态注入事件监听拦截在页面加载前注入debugger绕过代码80%扩展程序禁用特定事件拦截使用Disable JavaScript等浏览器扩展70%本地代理修改网络层拦截BurpSuite拦截修改响应头60%快捷键组合键盘事件拦截CtrlShiftI (Mac: CmdOptI)40%书签脚本DOM元素拦截javascript:void(document.body.οnclicknull)50%移动端调试跨设备绕过Chrome远程调试Android设备85%实战技巧在Chrome开发者工具中执行document.designModeon可解除大部分内容选择限制1.2 源码查看的替代方案当常规查看源码方式失效时可以考虑使用curl或wget直接获取原始响应curl -s http://target.com | grep -i flag通过浏览器缓存提取Chrome地址栏输入chrome://view-http-cache/利用Wayback Machine等存档服务获取历史版本2. 隐藏信息源的六种非常规挖掘技术2.1 DNS记录的宝藏挖掘CTFshow web11展示了通过DNS TXT记录隐藏信息的典型案例。除常规nslookup外还有更多专业工具# 使用dig工具查询 dig TXT flag.ctfshow.com short # 使用Cloudflare的DNS查询 curl https://1.1.1.1/dns-query?nameflag.ctfshow.comtypeTXT -H accept: application/dns-json # 全量DNS记录枚举 dnsenum --enum flag.ctfshow.comDNS记录类型与信息隐藏可能性TXT记录最常用的信息隐藏位置SPF记录可能包含服务器IP信息MX记录邮件服务器相关信息CAA记录证书颁发机构信息SRV记录服务发现协议数据2.2 版本控制系统的深度利用.git目录泄露是常见考点但进阶技巧包括使用GitHack工具完整重建仓库python GitHack.py http://target.com/.git/分析reflog获取历史操作记录检查stash列表寻找未提交的修改对于SVN泄露可尝试svn checkout http://target.com/.svn/ svn log -v http://target.com/3. 前端加密逆向的实战解析CTFshow web19展示了典型的前端加密场景。当遇到CryptoJS加密时可采用以下分析流程3.1 加密算法识别步骤定位加密函数搜索CryptoJS、encrypt等关键词确定加密模式CBC/ECB/CTR等提取密钥和IV常硬编码在JS中分析填充方式ZeroPadding/PKCS7等3.2 实战解密过程针对题目中的AES-CBC加密可使用以下Node.js脚本解密const CryptoJS require(crypto-js); const key 0000000372619038; const iv ilove36dverymuch; const encrypted a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04; const decrypt (ciphertext) { const keyBytes CryptoJS.enc.Latin1.parse(key); const ivBytes CryptoJS.enc.Latin1.parse(iv); const decrypted CryptoJS.AES.decrypt( { ciphertext: CryptoJS.enc.Hex.parse(ciphertext) }, keyBytes, { iv: ivBytes, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding } ); return decrypted.toString(CryptoJS.enc.Utf8); }; console.log(decrypt(encrypted)); // 输出i_want_a_36d_girl前端加密常见漏洞模式密钥硬编码在JS中出现率85%使用弱加密算法如DES、RC4等不安全的ECB模式使用可预测的IV生成方式缺乏完整性校验机制4. 备份文件与源码泄露的进阶挖掘4.1 备份文件智能爆破技巧除常见的www.zip、backup.tar外可尝试以下爆破策略时间戳命名爆破如backup_20230715.zip开发者命名习惯如final_version.rar编辑器临时文件如.idea/workspace.xml版本差异文件如diff.patch使用ffuf工具高效爆破ffuf -w wordlist.txt -u http://target.com/FUZZ -e .zip,.rar,.tar,.gz,.bak4.2 PHPS文件利用的深层原理PHPS文件泄露的本质是服务器配置不当。深入利用包括检查php.ini中的expose_php设置利用phpinfo()信息泄露通过?-S启动的开发服务器特性解析差异导致的源码泄露如index.php~5. HTTP头与Cookie的隐藏信息场5.1 响应头深度分析要点关键响应头字段常包含线索X-Powered-By服务器技术栈X-Debug-Token调试信息Server服务器版本信息Set-Cookie会话管理机制使用curl详细检查curl -I http://target.com | grep -iE x-|server|cookie5.2 Cookie逆向工程案例当题目提示cookie不能存放隐私数据时可尝试Base64解码Cookie值检查JWT结构如有分析签名算法时间戳转换XOR等简单加密逆向6. 编辑器与组件漏洞的非常规利用6.1 编辑器目录遍历的防御突破类似CTFshow web14的编辑器漏洞现代防御措施下可尝试上传点文件名注入如../../flag.txt临时文件竞争条件利用插件系统命令注入模板注入漏洞6.2 探针文件的信息萃取技术php探针如tz.php除基本信息外还可获取数据库连接配置禁用函数列表包含路径信息环境变量设置关键检查命令// 检查可执行命令 system(id); // 检查文件读取 highlight_file(/etc/passwd);7. 数据库泄露的多元化利用方式7.1 SQL文件的结构化分析获得SQL备份文件后应系统化分析表结构设计缺陷管理员密码哈希类型敏感数据存储位置数据库版本特征7.2 MDB文件的专业处理针对ASPAccess架构的.mdb文件使用mdb-tools提取数据mdb-export database.mdb tables分析表单设计元数据查找VBA脚本代码检查OLE对象字段8. 游戏与交互题的反常规解法8.1 JavaScript游戏逆向技巧类似CTFshow web18的游戏题进阶解法包括修改内存变量值Chrome Memory面板重写关键函数逻辑时间变量篡改分数校验绕过8.2 WebSocket通信分析对于实时交互题目使用Chrome的WebSocket捕获重放修改关键消息协议逆向工程加密通信解密9. 综合信息链的构建与利用高级信息搜集需要建立信息关联WHOIS信息与域名历史关联证书透明度日志分析子域名与端口服务关联代码仓库与开发者信息关联自动化信息收集框架import os import subprocess def gather_info(target): # WHOIS查询 subprocess.run(fwhois {target}, shellTrue) # 子域名爆破 subprocess.run(famass enum -d {target}, shellTrue) # 目录扫描 subprocess.run(fgobuster dir -u {target} -w common.txt, shellTrue) # 屏幕截图 subprocess.run(fgowitness single {target}, shellTrue)在实战中我曾遇到一道需要组合DNS记录、Git泄露和前端加密的题目。通过系统化的信息关联最终在Git历史记录中找到了被删除的加密密钥成功解出了flag。这提醒我们信息搜集不是孤立的技术堆砌而是需要建立全局视角的连接能力。