这道CTF题目来自SWPUCTF 2021新生赛的Web方向,考察的是前端代码审计和基础渗透测试能力。题目名称"gift_F12"已经给出了重要提示——F12开发者工具将是解题的关键入口。
在实际CTF比赛中,这类前端题目通常考察以下几种能力:
首先我们访问题目提供的URL,看到一个简单的礼物领取页面。页面主要包含:
使用Chrome开发者工具(F12)查看页面元素时,发现几个关键点:
html复制<div class="gift-box">
<h3>恭喜你获得神秘礼物!</h3>
<button onclick="check()">点击领取礼物</button>
<form id="hidden_form" style="display:none;">
<input type="hidden" id="key" value="5d5c5b5a">
</form>
</div>
页面包含一个check()函数:
javascript复制function check() {
var input = prompt("请输入兑换码:");
if(input === "NSSCTF") {
alert("恭喜你获得flag:" + document.getElementById("key").value);
} else {
alert("兑换码错误!");
}
}
虽然直接解法很简单,但作为CTF题目,我们需要理解其设计意图:
这道题目展示了几个典型的前端安全问题:
解题过程中用到了几个开发者工具技巧:
从防御角度,应该:
这类前端题目常见的变种包括:
这类技术在真实渗透测试中也很有用:
提示:在真实环境中,未经授权进行渗透测试是违法行为,务必获得书面授权后再开展测试工作。