Flash XSS 漏洞详解 根治的好办法
package {importflash.display.Sprite;importflash.external.ExternalInterface;public class XSSTest extendsSprite{public functionXSSTest(){var jsFunction:String =loaderInfo.parameters.jsFunction;var param:String = "abc";ExternalInterface.call(jsFunction, param);}} }
public functionXSSTest(){var param:String =loaderInfo.parameters.param;ExternalInterface.call("console.log", param);}
try { __flash__toXML(console.log("good" )) ; } catch (e) { "<undefined/>"; }
try { __flash__toXML(console.log("\\" ));alert(/XSS/);}catch(e){} //")) ; } catch (e) { "<undefined/>"; }
try { document.getElementById("XSSTest" ).SetReturnValue(__flash__toXML(alert( null)) ); } catch (e) { document.getElementById("XSSTest" ).SetReturnValue("<undefined/>"); }
public static function checkJsFunctionValid(functionName:String):Boolean{var reg:RegExp = /^[a-zA-Z0-9_\.]+$/;returnreg.test(functionName);}public static function checkObjectIdValid():Boolean{if(ExternalInterface.available){var objectId:String =ExternalInterface.objectID;if (!objectId || (objectId == objectId.replace(/[^0-9a-zA-Z_]/g , "")))return true;elsereturn false;}return true;}
str.replace( /[\"\\]/g , function(d:String, b:*, c:*){ return '\\' + d.charCodeAt(0).toString(8); });
function__flash__arrayToXML(obj) {var s = "<array>";for (var i=0; i<obj.length; i++) {s+= "<property id=\"" + i + "\">" + __flash__toXML(obj[i]) + "</property>";}return s+"</array>"; }function__flash__argumentsToXML(obj,index) {var s = "<arguments>";for (var i=index; i<obj.length; i++) {s+=__flash__toXML(obj[i]);}return s+"</arguments>"; }function__flash__objectToXML(obj) {var s = "<object>";for (var prop inobj) {s+= "<property id=\"" + prop + "\">" + __flash__toXML(obj[prop]) + "</property>";}return s+"</object>"; }function__flash__escapeXML(s) {return s.replace(/&/g, "&" ).replace(/</g, "<").replace(/>/g, ">" ).replace(/"/g, "" ").replace(/'/g, "'"); }function__flash__toXML(value) {var type = typeof(value);if (type == "string") {return "<string>" + __flash__escapeXML(value) + "</string>";}else if (type == "undefined") {return "<undefined/>";}else if (type == "number") {return "<number>" + value + "</number>";}else if (value == null) {return "<null/>";}else if (type == "boolean") {return value ? "<true/>" : "<false/>";}else if(value instanceof Date) {return "<date>" + value.getTime() + "</date>";}else if(value instanceof Array) {return__flash__arrayToXML(value);}else if (type == "object") {return__flash__objectToXML(value);}else{return "<null/>" ; //??? } }function__flash__addCallback(instance, name) {instance[name]= function() {return eval(instance.CallFunction("<invoke name=\"" +name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));} }function__flash__removeCallback(instance, name) {instance[name]= null; }
转载于:https://www.cnblogs.com/kenkofox/p/3405395.html
Flash XSS 漏洞详解 根治的好办法相关推荐
- xss-labs通关,xss漏洞详解
文章目录 前言 一.XSS详解 存储型 反射型 DOM型 二.xss-labs通关 总结 前言 XSS 的原理是 WEB 应用程序混淆了用户提交的数据和 JS 脚本的代码边界,导致浏览器把用户的输入当 ...
- 反射型XSS漏洞详解
反射型XSS漏洞 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数,并在响应中将这个文 本返回给用户.对于开发者而言,使用这种机制 ...
- xxs漏洞危害_反射型XSS漏洞详解
反射型XSS漏洞 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数,并在响应中将这个文 本返回给用户.对于开发者而言,使用这种机制 ...
- xss-labs靶场实战全通关详细过程(xss靶场详解)
目录 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 level 1 ...
- XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决
XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- OWASP-TOP10漏洞详解以及防护方案
OWASP TOP 10 漏洞详解以及防护方案 OWASP介绍 官网:http://www.owasp.org.cn/ OWASP TOP10 指出了 WEB 应用面临最大风险的 10 类问题,是目前 ...
- OWASP top 10漏洞详解
一.写在前边 临近毕业,最近在找实习单位,看到好多招聘要求熟悉owasp top 10 安全漏洞,于是在经过一番查资料,终于有了大致的了解,为了加深印象,特意通过博客记录一下,也希望为有同样需求的 ...
- Pikachu靶场之文件上传漏洞详解
Pikachu靶场之文件上传漏洞详解 前言 文件上传漏洞简述 什么是文件上传漏洞? 文件上传的原理 文件上传漏洞有哪些危害 文件上传漏洞如何查找及判断 文件上传如何防御 文件上传漏洞绕过的方式有哪些 ...
最新文章
- 2020腾讯广告算法大赛分享(冠军)
- 深度学习之梯度下降法
- Raid信息丢失数据恢复及oracle数据库恢复验证方案
- 让Windows Server 2008+IIS 7+ASP.NET突破默认限制,支持海量并发连接数
- php和mysql的概述_PHP的MySQL扩展:MySQL数据库概述_MySQL
- SAP SD 定价过程的16个字段的作用说明
- Chrome View Source Code 那些事
- 业务处理速度变慢?且看IT如何成为救世主
- 最佳字符串对齐的Java实现
- 初识好朋友计算机课件,-精选版初识我们的好朋友——计算机.ppt
- 大型网站系统架构实践(六)深入探讨web应用集群Session保持
- 如何在计算机设置鼠标宏,鼠标宏怎么设置,详细教您鼠标如何设置宏
- 三十四、Expandable grid 可扩展的表格
- SQL分组排序函数(组内分别排序)
- UVM Primer Ch2 A Conventional Testbench for the TinyALU
- 玩家在地形上的位置同步给地图
- 小猫爬山(DFS+剪枝)
- 正则表达式叠字,过滤重复字
- python计算派的值_使用 Python 计算 π 值
- Tree-Shaking原理
热门文章
- Ubuntu侧边任务栏自动隐藏
- 使用B::Deparse模块对perl代码反汇编
- jquery调用click事件的三种方式
- 【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过
- EasyUI-子页面增加显示tabs的一个问题
- Convert .Net Program To Mono
- Android开发之GridView的使用(解读谷歌官方API)
- 接口转发和重定向区别(一)
- Binder相关面试总结(二):Binder到底是什么?
- YOU SAY quot;THE RULE IS HEREquot;,BUT I SAY quot;WHY?quot;