xss
XSS(Cross - Site Scripting)即跨站脚本攻击,是一种常见的 Web 安全漏洞。攻击者通过在目标网站注入恶意脚本(通常是 JavaScript),当其他用户访问该网站时,这些恶意脚本会在用户的浏览器中执行,从而达到窃取用户敏感信息(如 Cookie、会话令牌等)、篡改页面内容、重定向用户到恶意网站等目的。为了与层叠样式表(CSS)区分,所以将其简称为 XSS。
XSS 攻击的类型
反射型 XSS
- 原理:攻击者构造包含恶意脚本的 URL,诱导用户点击。当用户访问该 URL 时,服务器会将恶意脚本作为响应的一部分返回给浏览器,浏览器会执行该脚本。
- 示例:
假设有一个搜索页面search.php
,它会将用户输入的搜索关键词显示在页面上。攻击者构造如下 URL:http://example.com/search.php?keyword=<script>alert('XSS')</script>
如果服务器没有对用户输入进行正确的过滤和转义,当用户点击该 URL 时,浏览器会弹出一个显示 “XSS” 的警告框。
存储型 XSS
- 原理:攻击者将恶意脚本提交到目标网站的数据库中,当其他用户访问包含该恶意脚本的页面时,浏览器会执行该脚本。
- 示例:
在一个留言板网站上,攻击者在留言内容中输入,当其他用户查看该留言时,恶意脚本会在他们的浏览器中执行,将他们的 Cookie 信息发送到攻击者的服务器。DOM 型 XSS
- 原理:基于 DOM(文档对象模型)的 XSS 攻击不依赖服务器端处理,而是通过修改页面的 DOM 结构来注入恶意脚本。攻击者通过构造特殊的 URL 或用户输入,使得页面的 JavaScript 代码在处理这些输入时,将恶意脚本插入到 DOM 中并执行。
做题步骤
打开靶场,发现是xss闯关模式
点击图片
方法一:直接闯关
xss语句还有许多看不懂,卡住了,准备先学习一下,再依次闯关
1-20关参考链接:XSS_Lab(详解版) XSS-Lab(XSS注入笔记1-16)
XSS_Lab(答案)
level1(直接注入)
观察URL,在参数name处上传JS代码进行测试,GET传参,出现弹窗。
<script>alert('xss')</script>
<script>
标签用于在 HTML 文档中嵌入或引用 JavaScript 代码。这段代码中的 JavaScript 代码alert('xss')
是调用alert()
函数,该函数会弹出一个包含字符串'xss'
的警告框。
level2 (闭合双引号注入)
直接插入level 1中的JS代码<script>alert('xss')</script>,并没有出现弹窗,通过右键查看网页源代码,发现我们输入的JS代码在双引号内,因此需要通过闭合双引号进行绕过。
如果
<script>
标签的属性值使用了双引号,那么在<script>
标签内部使用单引号包裹字符串可以避免引号冲突。反之,如果<script>
标签处于一个单引号包围的 HTML 属性值中,那么<script>
内部使用双引号会更合适。
(怎么判断用单引号还是双引号,)
(输入进去源代码没有显示,不清楚是哪一步出错了)
方法二:尝试跳过关卡
尝试输入,发现level20有回显,level21无回显,说明只有20关。
查看网页源代码,得flag