CTFSHOW-WEB

发布时间:2026/7/29 18:10:21
CTFSHOW-WEB 一.Base64编码隐藏1打开环境发现是一个登录页面然后新手入门的话目前就只要查看页面源代码2.然后就在这里发现存在base64编码直接解密就得到flag二.HTTP头注入1.打开靶场发现是和上一题一样的环境于是我们可以输入和上一题一样的密码CTF{easy_base64}但是显示有提示不合法的User-Agent,然后要我们换成ctf-show-brower,那我们就去抓包然后替换就行2.打开bp抓包这里抓的是我们输入完密码的那个页面的然后发送到repeater功能3.把User-Agent换成指定的ctf-show-brower然后点击send即可看见flag三.Base64多层嵌套解码1.打开靶场是和之前相同的登录界面但是查看源代码之后发现这里又告诉我们密码的加密过程2.根据这些加密的过程可以反向推断出原来的密码// 定义一个常量 correctPassword用来保存题目中给出的最终目标字符串也就是最后要比对的“正确结果” const correctPassword SXpVRlF4TTFVelJtdFNSazB3VTJ4U1UwNXFSWGRVVlZrOWNWYzU; // 定义一个函数 validatePassword用来验证输入的密码 input 是否能够通过题目的校验 function validatePassword(input) { // 第一步把输入的密码 input 进行 Base64 编码并把结果保存到变量 encoded 中 let encoded btoa(input); // 第二步 // 1. 先把上一步的 encoded 和固定字符串 xH7jK 拼接起来 // 2. 再对拼接后的结果做一次 Base64 编码 // 3. 最后使用 slice(3) 从下标 3 开始截取到末尾相当于删掉前 3 个字符 encoded btoa(encoded xH7jK).slice(3); // 第三步 // 1. 先用 split() 把字符串 encoded 拆成字符数组 // 2. 再用 reverse() 把字符顺序反转 // 3. 再用 join() 把反转后的数组重新拼接成字符串 // 4. 最后对这个倒序后的字符串再做一次 Base64 编码 encoded btoa(encoded.split().reverse().join()); // 第四步 // 1. 在当前 encoded 前面拼接固定字符串 aB3 // 2. 在当前 encoded 后面拼接固定字符串 qW9 // 3. 对拼接后的整体再做一次 Base64 编码 // 4. 再用 substr(2) 从下标 2 开始截取到最后相当于删掉前 2 个字符 encoded btoa(aB3 encoded qW9).substr(2); // 第五步 // 把当前的 encoded 再进行一次 Base64 编码 // 然后使用 与最开始定义的 correctPassword 进行严格比较 // 如果完全相等返回 true否则返回 false return btoa(encoded) correctPassword; } // 使用 for 循环来枚举 ASCII 码从 32 到 126 的所有常见可打印字符 for (let i 32; i 126; i) { // 把当前 ASCII 码 i 转成对应字符再和字符串 17316 拼接组成一个待测试的密码 let test String.fromCharCode(i) 17316; // 调用 validatePassword(test) 检查这个测试密码是否能通过校验 if (validatePassword(test)) { // 如果能通过校验就把这个可用密码输出到浏览器控制台中 console.log(test); } }3.最后解出来的密码是所有 ASCII 码 32-126 的字符与 17316 拼接4.到这个地方和上一题的过程就是一样的了直接给出flagCTF{base64_brute_force_success}四.HTTPS中间人攻击1.下载附件发现是一个流量包和一个sslkey.log文件有点像那个TLS流量分析2.既然给了这样的文件那就先按照做tls流量分析的步骤来把sslkey.log文件导入到.pcap中编辑——首选项——protocols里面找到tls然后导入.log文件3.然后过滤http流就只有两个然后去追踪tls流4.最后在这里找到了flag5.什么是HTTPS中间人攻击在CTF题目中HTTPS中间人攻击MITM[常用于考察选手对TLS加密原理、证书信任链以及流量解密技术的理解。HTTPS依赖TLS握手]与CA证书体系来确保端到端加密但如果攻击者能控制信任链就能解密并篡改通信内容。典型攻击流程流量截获攻击者或企业代理拦截客户端发往目标站点的HTTPS请求与真实服务器建立合法TLS连接。伪造证书使用自建CA签发与目标域名一致的“冒牌证书”并利用设备中预装的私有根证书绕过浏览器警告。双向加密通道 客户端 ↔ 代理使用伪造证书加密 代理 ↔ 服务器使用真实证书加密 所有数据在代理节点被解密、分析、再加密转发。数据可见性代理可查看明文HTTP请求/响应包括Cookie、密码等敏感信息。CTF实战解密方法在比赛中常会提供流量包.pcap[和sslkey.log]文件sslkey.log记录了TLS会话的临时密钥如CLIENT_RANDOM可用于解密HTTPS流量。在Wireshark中配置编辑 → 首选项 → Protocols → TLS → (Pre)-Master-Secret log filename指向sslkey.log解密后可直接追踪HTTP流分析Cookie、参数等信息进而进行伪造或注入攻击。五.Cookie伪造1.启动靶场发现这个页面和之前一样都是登录页面然后查看页面源代码2.然后这一步好像没什么作用我们再回到登录页面发现登录的用户名是guest游客身份登录我们尝试用这个当作是密码登录看一下3.然后就发现登录成功了于是设想要是以admin身份登录是否可以直接得到flag4.然后就是修改cookie,我这个版本的harkbar是点击MODIFY HEADER之后在Name里面找到Cookie选项然后把role中的guest改为admin5.然后点击EXECUTE,即可得到flag6.什么是Cookie伪造在 CTF Web 题目中Cookie常被用来存储用户状态或验证信息很多签到题会通过修改 Cookie 值来获取 Flag。理解其原理并掌握常用操作方法是解题关键。查看与修改 Cookie打开开发者工具在浏览器中按 F12切换到 Application存储 面板找到 Cookies。 查看当前站点的 Cookie 列表重点关注如 login、admin 等字段。修改 Cookie 值直接在浏览器开发者工具中双击对应值进行修改例如将 login0 改为 login1。 或使用 Burp Suite 抓包在 HTTP 请求头 中添加或修改 Cookie: login1刷新或重发请求修改后刷新页面或在 Burp Suite 中点击 Forward/Go若验证通过即可返回 Flag。技巧与注意事项优先查看源码和响应头有时 Flag 会直接出现在Set-Cookie或响应内容中。注意 Cookie 与 Session 的区别Cookie 存在客户端容易被篡改。对于加密或编码的 Cookie如 Base64需先解码再修改。