xss-labs通关大详解

目录

level1

 level2

level3

level4 

level5

 level6

level7

 level8

level9

 level10 

level11

level12 

 level13

level14

level15

level16​

 level17


xss-labs

level1

 观察三处箭头,可以发现它是向服务器提交了一个name参数,值为“test”,从页面

回显来看,将neme参数的值显示在了页面上,并且显示了name参数值的字符长度

接下来,查看源码

 他将name的参数值放到了<h2></h2>之间

将name的参数重新赋值:<script> alert('xss')</script>

 level2

 

与第一关相比,增加了“输入框”和“搜索”

使用第一关的方法

 发现不成功,查看网页源代码

可以看到在<h2> </h2>标签之中的恶意代码被编码了。其中<>都被编码成了html字符实体。 

 要想浏览器执行这里的弹窗代码,只需要将属性的引号和标签先闭合就可以了。将keyword的参数值重新赋值"><script>alert('xss')</script>//

 左边的">去闭合原先的"
右边的//去注释原先的">

level3

 尝试制造弹窗

 报错了,查看网页代码

 箭头所指的两处都将<>字符编码成了html字符实体

查看level3.php的代码

 发现这两处都使用了htmlspecialchars()函数进行了处理。

构造代码:level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索 

 

发现没有直接弹窗,这是因为onfocus事件的特殊性造成的 

onfocus 事件在对象获得焦点时发生。

onfocus 通常用于 <input>, <select>, 和<a>.

最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以

输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此

点击当前页面的输入框就可以完成弹框了。

level4 

上弹窗代码测试一下

 输入框中与我们提交的参数值有出入,<>没有了

查看网页源代码

箭头1处直接将<

<think>好的,我现在需要帮助用户解决XSS-Labs第11关的问题。首先,我得回顾用户提供的引用内容,尤其是引用[3],里面提到了第11关的情况。根据描述,这一关使用了htmlspecialchars()函数处理输入,导致无法通过常规的双引号闭合进行XSS攻击。同时,这一关采用的是Flash XSS攻击,可能涉及加载第三方资源或与JavaScript通信。 接下来,我需要确认htmlspecialchars()函数的作用。这个函数默认会转换双引号、单引号、&符号、尖括号等为HTML实体,但用户提到双引号被处理了,所以可能需要找到未被过滤的地方。例如,如果函数的参数设置中没有处理单引号,或者某些属性未被正确转义,可能存在注入点。 然后,考虑Flash XSS的两种方式。加载第三方资源可能需要构造一个恶意的SWF文件,或者利用现有的Flash文件中的漏洞。另一种方式是通过Flash与JavaScript的通信接口,比如ExternalInterface.call,来执行恶意代码。 用户可能没有注意到输入点的其他属性,比如onclick、onmouseover等事件处理器,或者某些标签的属性如href、src等是否被正确过滤。例如,如果某个参数未经过滤,可能可以插入JavaScript伪协议,如javascript:alert(1)。 此外,需要测试不同的注入点。用户可能在尝试闭合双引号时遇到了阻碍,但也许可以通过其他属性或事件来绕过。例如,如果输入被插入到某个标签的属性中,可以尝试闭合该属性并添加新的事件处理器。 可能还需要检查响应页面中的HTML源码,看输入内容是如何被处理的。是否有某些字符被转义,哪些地方没有被转义。例如,如果输入出现在<input>标签的value属性中,并且双引号被转义,但单引号没有被转义,可以尝试使用单引号闭合。 最后,结合引用[3]提到的Flash XSS,可能需要构造特定的Payload,利用Flash的参数来执行脚本。例如,在SWF文件的参数中注入恶意代码,或者利用跨域策略文件的问题。</think>### XSS-Labs Level 11 解题思路 这一关的核心在于**绕过htmlspecialchars()过滤**并利用**Flash XSS漏洞**,具体步骤如下: 1. **分析过滤机制** 根据引用[^3],输入的双引号会被htmlspecialchars()转换为HTML实体(如`"`),导致常规闭合失效。但需要注意: ```html <!-- 假设输入参数被插入如下位置 --> <param name="value" value="用户输入内容"> ``` 若`htmlspecialchars()`未过滤单引号,则可尝试用单引号闭合属性: `' onclick=alert(1) '` 2. **利用Flash参数注入** Flash的`allowScriptAccess`参数若配置为`always`,可通过`flashvars`参数传递恶意代码: ```html <embed src="xss11.swf" flashvars="xss=javascript:alert(document.domain)"> ``` 若服务器未对`flashvars`做过滤,可直接触发XSS。 3. **测试隐藏输入点** 发现页面存在未公开的隐藏参数`t_link`或`t_history`,可能绕过常规过滤: ```http http://xss-labs.com/level11.php?t_link=javascript:alert(1) ``` §§相关解决方案§§ ```html <!-- 最终有效Payload示例 --> '><embed src="http://malicious.com/xss.swf" allowScriptAccess=always> ``` 此Payload会闭合原有标签并加载恶意SWF文件,利用Flash漏洞触发脚本执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值