`
wang_guo_qiang
  • 浏览: 112303 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

浅谈javascript函数劫持

阅读更多

浅谈javascript函数劫持

作者: luoluo,  出处:Xfocus, 责任编辑: 张帅, 
2007-12-13 14:14
下面是具体内容:
  映象劫持技术对网络安全威胁巨大,这里我们将主要讨论javascript劫持,攻击者是如何利用javascript实现脚本劫持的呢?浅谈javascript函数劫持,希望对用户有所帮助……

  一、概述

  Javascript函数劫持,也就是老外提到的Javascript hijacking技术。最早还是和剑心同学讨论问题时偶然看到的一段代码,大概这样写的:    

window.alert = function(s) {};

  觉得这种用法很巧妙新颖,和API Hook异曲同工,索性称之为Javascript function hook,也就是函数劫持。通过替换js函数的实现来达到劫持这个函数调用的目的,一个完整的hook alert函数例子如下:

<!--1.htm-->
<script type="text/javascript">
<!--
var _alert = alert;
window.alert = function(s) {
    if (confirm("是否要弹框框,内容是\"" + s + "\"?")) {
        _alert(s);
    }
}
//-->
</script>
<html>
<body>
<input type="button" onclick="javascript: alert('Hello World!')" value="test" />
</body>
</html>

  搞过API Hook的同学们看到这个代码一定会心的一笑,先保存原函数实现,然后替换为我们自己的函数实现,添加我们自己的处理逻辑后最终再调用原来的函数实现,这样这个alert函数就被我们劫持了。原理非常简单,下面举些典型的应用来看看我们能利用它来做些什么。

 

二、应用举例

  1. 实现一个简易的Javascript debugger,这里说是debugger比较标题党,其实只是有点类似于debugger的功能,主要利用js函数劫持来实现函数的break point

2. 设置陷阱实时捕捉跨站测试者,搞跨站的人总习惯用alert来确认是否存在跨站,如果你要监控是否有人在测试你的网站xss的话,可以在你要监控的页面里hook alert函数

分享到:
评论

相关推荐

    浅谈javascript函数劫持[转自xfocus]第1/3页

    一、概述 javascript函数劫持,也就是老外提到的javascript hijacking技术。最早还是和剑心同学讨论问题时偶然看到的一段代码,大概这样写的: window.alert = function(s) {}; 觉得这种用法很巧妙新颖,和API Hook...

    浅谈JavaScript函数的四种存在形态_.docx

    在JavaScript中,函数是一种非常重要的数据类型,它们可以以多种形态存在。本文将深入探讨JavaScript函数的四种主要存在形态:函数形态、方法形态、构造器形态以及上下文调用模式。 1. **函数形态**: 函数形态是最...

    javascript函数式编程

    JavaScript函数式编程是利用JavaScript语言编写函数式风格代码的一种编程范式。函数式编程强调使用纯函数、避免副作用、函数的不可变性以及利用高阶函数等概念。通过阅读《JavaScript函数式编程指南》,读者可以了解...

    JavaScript函数式编程.pdf

    不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...

    C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用

    C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用

    JavaScript函数(源代码)

    JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...

    javascript指南和函数式编程

    而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...

    第7节 JavaScript函数及应用.rar

    第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数及应用.rar第7节 JavaScript函数...

    QT和网页中的JavaScript函数进行相互调用的实现

    - 这里的回调函数用于处理JavaScript函数的异步返回结果,如果需要同步获取结果,可以使用`QWebEngineScript`来注册一个全局JavaScript对象,然后通过该对象调用JavaScript函数。 2. **JavaScript调用QT函数**: ...

    JavaScript函数式编程

    全书分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多函数式...

    浅谈javascript面向对象编程

    ### 浅谈JavaScript面向对象编程 #### 一、概述 面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。在JavaScript中,尽管语言本身并不支持传统的类(class)概念,但开发者可以通过原型继承和其他技术来...

    浅谈javascript 函数内部属性

    在JavaScript中,函数是一种特殊的对象,而它所具备的一些内部属性则赋予了函数更多的灵活性与控制力。本篇主要探讨的是函数内部两个重要的属性:arguments和this。 首先,我们来了解arguments对象。arguments是一...

    浅谈javascript 函数表达式和函数声明的区别

    在JavaScript编程中,函数作为一等公民,其声明的方式主要有两种:函数声明式和函数表达式。它们在使用上有一些差异,这会影响程序的行为和执行方式。 首先,函数声明式是一种在代码中直接声明函数的方式。它的语法...

    浅谈Javascript嵌套函数及闭包

    在探讨JavaScript嵌套函数及闭包之前,我们必须了解一些基础知识。首先是JavaScript中的函数,它们是JavaScript编程的核心。函数在JavaScript中是“一等公民”,这意味着函数可以作为参数传递给其他函数,也可以作为...

    JavaScript之函数(ppt)

    JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数...

    浅谈JavaScript function函数种类

    在探讨JavaScript函数的种类之前,我们先了解JavaScript中的函数没有重载的概念。在其他一些语言中,如果定义了相同函数名但参数签名不同的多个函数,根据传入参数的不同,会选择适当的函数进行调用。但在JavaScript...

    浅谈javascript函数式编程

    函数式编程,属于编程范式的一种 1 函数是第一公民,可以返回值,也可以作为其他函数的参数 //console是一个函数 function con(v){ console.log(v) } // execute 也是一个函数 function execute(fn){ fn(1) } //...

    浅谈JavaScript函数的四种存在形态

    JavaScript函数在编程中扮演了极其重要的角色,它是构成JavaScript应用逻辑的核心。在JavaScript中,函数不仅是一种语法结构,也是一种数据类型,这意味着它可以被赋值给变量、作为参数传递给其他函数,以及作为对象...

Global site tag (gtag.js) - Google Analytics