热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Javascript注入技巧_javascript技巧

Javascript注入技巧
作者: kostis90gr
翻译: 黯魂[S.S.T]
本文已发表于《黑客防线》6月刊,版权属于《黑客防线》及脚本安全小组,转载请保持文章完整性,谢谢 :)

这份指南仅仅是出于报告目的,如果任何人把它用于违法目的,我不负责任.

通过使用Javascript注入,用户不用关闭网站或者把页面保存在他的PC上就可以改变网站中的内容.这是由他的浏览器的地址栏完成的.

命令的语法看上去像这样:

Copy code
javascrit:alert(#command#)

比方说如果你想看到在网站http://www.example.com里面的一个警告框,那么首先在地址栏输入URL(www.example.com),当页面加载完之后,清空URL并输入javascrit:alert("Hello World")作为一个新的URL.这样将弹出一个警告框显示Hello World.可是,一些人会用这个技巧改变页面内的几乎任何内容.例如一个图片.让我们设想有一个网站的logo图片.通过查看页面源代码(可以使用浏览器中的"查看源代码"做到),我们发现一句HTML代码:

Copy code


得到信息:有一个图片被命名为hi,且源文件为hello.gif.我们想要改变它为bye.jpeg并存储到我们的站点http://www.mysite.com上.所以我们的图片的完整URL是http://www.mysite.com/bye.jpeg 要使用Javascript注入,我们需要在地址栏中输入:

Copy code
Javascript:alert(document.hi.src="[url]http://www.mysite.com/bye.jpeg"[/url])

你将看到一个提示框说http://www.mysite.com/bye.jpeg,并且在那之后图片将会被改变.注意虽然那些变化只是暂时的!如果你刷新页面或者再次进入,你造成的变化将丢失,因为你改变的不是服务器上的站点,而是你PC上的.

使用同样的方法,我们可以查看或改变变量的值.比如我们在网站中找到这样一些源代码:

Copy code

var a="test"
《SCRIPT》

意思是给变量a赋值test.为了查看变量的值,我们将输入:

Copy code
Javascript:alert(a)

然后为了把它从test改为hello,则输入:

Copy code
Javascript:alert(a="hello")

但是Javascript注入主要用来改变表单的属性.下面是我们已有的部分代码:

Copy code





我们想要表单发送到我们的邮箱,而不是代码中的邮箱someone@somewhere.com,这个想法可以被这个命令完成:

Copy code
Javascript:alert(document.format.mail.value="[email]me@hacker.com[/email]")

到现在你已经知道我总是按层次来讲述,下面我们就从大到小开始:
1)从document开始
2)输入我们想要改变的对象名(比如document.hi.src)或者它所属的属性并且重新赋值(比如document.format.mail.value)
3)最后结束于我们想要改变的特征(比如源路径:document.hi.src,或者变量值:document.format.mail.value)
4)用"."号分隔单词.
5)当我们想要改变特征值的时候,使用"="号和新的特征值.
*注意:当新的特征值为字符串时需要使用双引号""括起来(比如:document.format.mail.value="me@hacker.com")如果我们想要把它变为一个变量的值,则不需要使用双引号"".比如我们想改变变量a的值,使其等于变量b的值,会输入Javascript:alert(a=b).

但是,大多数页面中的属性都没有名字,例如:

Copy code





在这个代码中,表单没有名字.利用上面的所有信息,命令可能看上去像这样:

Copy code
Javascript:alert(document. .mail.value="[email]me@hacker.com[/email]")

在这种情况下我们将不得不计算所有的表单来发现这个表单的序号.我会用一个例子来讲解:

代码如下:












在以上代码中我们看见了3个表单,但是我们只对第二个感兴趣.因此我们想要的表单序号就是2.千万别忘记我们是从1开始计算的,我们说1,2,3,4...但是在Javascript中却是从0开始计算的.它是0,1,2,3...所以真正的表单序号是1,不是2.通常我们要先找到表单序号再减一.

我们将用这个序号来补全我们的命令:

代码如下:

Javascript:alert(document.forms[1].mail.value="me@hacker.com")



像这样,你就能改变没有名字的图片或者链接了.
对于图片:

代码如下:

Javascript:alert(document.images[3].src="#你想改变的目标图片URL#")


对于链接:

代码如下:

Javascript:alert(document.links[0].href="http://www.undug.net/#你想改变的目标链接#")



最后,我们可以用这个技巧编辑COOKIEs.

下面的命令由triviasecurity.net的Dr_aMado所编写,但是我修改了一点以至于在用户编辑它之前就能显示COOKIE.你只需要复制它们到地址栏:

代码如下:

Javascript:alert(window.c=functiona(n,v,nv){c=document.COOKIE;c=c.substring(c.indexOf(n)+n.length,c.length);c=c.substring(1,((c.indexOf(";")>-1)?c.indexOf(";") :c.length));nc=unescape(c).replace(v,nv);document.COOKIE=n+"="+escape(nc);return unescape(document.COOKIE);});alert('The COOKIE is: "'+document.COOKIE+'"');alert(c(prompt("The name of the COOKIE:",""),prompt("Change this value:",""),prompt("with this:","")));



作为结束,我必须强调我们所做的改变仅仅是在用户端!就像是把网站保存在了你的PC上,然后修改它.尽管如此,使用这个技巧你仍然可以欺骗一个页面(例如COOKIEs)或者通过一个页面的安全验证.例如一些页面会检测用户从哪发送的数据.如果数据从http://www.test.com/form.php发送到http://www.test.com/check.php,check.php可能会检测数据是否是从http://www.test.com/form.php上的表单发送的.除此之外,如果你打算登录一个页面中你自己的Javascript代码,通过使用一些像这样的技巧,你将能够改变类似不变的图片!可是你需要用到比这里讲到的更深层次的知识.

要是有任何问题和建议,请发邮件给我:kostis90gr@gmail.com
推荐阅读
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • Splunk Enterprise 存在任意代码执行漏洞
    splunk,enterprise,存在,任 ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • 起底▍Spring Boot/Cloud背后豪华的研发团队 ——独角兽公司Pivotal
    作者|纯洁的微笑编辑|梅花鹿36大数据已获得授权转载我们刚开始学习SpringBoot的时候肯定都会看到这么一句话:SpringBoot是由Pivotal团队提供的全 ... [详细]
  • 吴恩达“机器学习”——学习笔记二
    定义一些名词欠拟合(underfitting):数据中的某些成分未被捕获到,比如拟合结果是二次函数,结果才只拟合出了一次函数。过拟合(overfitting):使用过量的特征集合, ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • 本篇内容主要讲解“JavaScript在网页设计中的嵌入应用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小 ... [详细]
  • Redis 外部访问设置
    1、错误原因Redis搭建好后一般都是使用编程语言进行连接调用,默认Redis的设置是不允许外界访问的,连接Redis只能通过本地(127.0.0.1)来连接,而不能使用网络IP( ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • C#使用System.Net.Mail类实现邮件发送【.Net开发】
    这篇文章介绍了C#使用System.Net.Mail类实现邮件发送的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值, ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
author-avatar
手机用户2702935165
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有