1、JavaScript注入就是在浏览器地址栏中输入一段js代码,用来改变页面js变量、页面标签的内容。
使用Javascript注入,用户不需要关闭或保存网页就可以改变其内容,这是在浏览器的地址栏上完成的。命令的语法如下:
javascript:alert(#command#)
例如,如果你想在http://www.example.com站点上看到一个alert警告框,那么首先在地址栏上输入URL并等待页面加载完成,然后删掉URL并输入:
javascript:alert("Hello World")
作为新的URL。这将弹出一个“Hello World”警告框,使用这一技术几乎可以改变网页的任何内容,例如一张图片。假设有一张网站logo图片,我们通过查看页面源文件找到其中一段HTML代码:
<IMG Name="hi" SRC="hello.gif">
图片被命名为“hi”,源文件是“hello.gif”,我们想要把它改成存储在我们站点(http://www.mysite.com)上的
“bye.jpeg”文件,因此图片完整的URL地址是http://www.mysite.com/bye.jpeg,使用Javascript注入,
我们只需要在地址栏上输入:
javascript:alert(document.hi.src="http://www.mysite.com/bye.jpeg")
你将会看到弹出“http://www.mysite.com/bye.jpeg”alert警告,然后图片就被更改了。需要注意的是,这些更改只是暂时的!如果你刷新页面或者重新进入,你的更改将会消失,因为你只是在你的PC作了这些更改,而不是在网页服务器上。
使用同样的方法我们可以查看或更改变量的值,例如我们在网页上找到一段这样的代码:
<SCRIPT LANGUAGE="JavaScript">
var a="test"
</SCRIPT>
意思是变量a的值为“test”,现在我们输入:
javascript:alert(a)
然后我们将其值改为“hello”:
javascript:alert(a="hello")
Javascript注入通常被用来更改表单属性,假设有一段这样的代码:
<form name="format" action="send.php" method="post">
<input type="hidden" name="mail" value="someone@somewhere.com">
<input type="text" name="name">
<input type="submit" value="submit"></form>
我们想让表单发送到我们的邮箱,而不是someone@somewhere.com。可以使用如下命令:
javascript:alert(document.format.mail.value="me@hacker.com")
- 也许你已经注意到了这些命令的层次关系:
- 我们按照从左到右的顺序依次说明:
- 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")需要用双引号把它括起来。
- 如果我们想要把它作为一个变量的值,则不需要使用双引号""。例如我们想要将变量b的值赋予变量a,我们可以输入javascript:alert(a=b)。
- 但是,页面中的大部分标签都没有名字,比如:
<form action="send.php" method="post">
<input type="hidden" name="mail" value="someone@somewhere.com">
<input type="text" name="name">
<input type="submit" value="submit"></form>
在这段代码中没有表单名,综合上面这些信息,可以使用此命令:
javascript:alert(document. .mail.value="me@hacker.com")
在这种情况下我们必须统计并找出表单序号,下面是一个例子:
<form action="send.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit">
</form>
<form action="send.php" method="post">
<input type="hidden" name="mail" value="someone@somewhere.com">
<input type="text" name="name">
<input type="submit" value="submit">
</form>
<form action="send.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit">
</form>
- 在以上代码中我们看见了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")
- 这样你就可以更改没有名字的图片或链接了,你可以把“forms”换成任何你想要的标签类型。对于图片就是
javascript:alert(document.images[3].src="#the url of the picture you want#")
对于链接就是
javascript:alert(document.links[0].href="#the url you want#")
- 最后,我们可以用这个技巧来编辑cookies。下面的命令由triviasecurity.net的Dr_aMado编写,我只修改了一点点,让它在用户编辑之前显示出来。你只要把它们复制到地址栏就可以了:
javascript:alert(window.c=function a(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:","")))
//如果你想要手动更改你的cookie,可以使用下面这条命令:
javascript:alert(document.cookie)
这将显示你的当前cookie,假设是“userid=1”,如果你想把它改成“userid=2”,可以使用下列命令:
javascript:alert(document.cookie="userid=2")
最后我必须强调的是,所有的更改都只是在客户端!就像是把网页保存在你的PC上然后修改它。尽管如此,使用这一技巧你仍然可以欺骗页面(例如cookies)或绕过安全验证。例如一些网页会检测用户发送数据的位置,如果从http://www.test.com/form.php
发送数据到http://www.test.com/check.php,check.php可能会检测数据是否来自http:
//www.test.com/form.php上的表单。除此之外,如果你打算在页面中输入你自己的JavaScript代码,通过使用一些这样的技巧,你将能够更改图片并保持不变!
分享到:
相关推荐
通过Javascript注入实施的PDF攻击.pdf
初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范。 发生模式: JavaScript注入漏洞能发生作用主要...
浅谈html转义及防止javascript注入攻击的方法.docx
servlet过滤器Api 以及乱码处理.javascript注入问题
网络注入 Chrome扩展程序可将自定义JavaScript注入每个页面
本文告诉大家什么是js注入,讨论防止 ASP.NET MVC 应用程序受到 JavaScript 注入攻击的两种技术,感兴趣的小伙伴们可以参考一下
用于注入 Javascript 的浏览器扩展 这是一个示例,向您展示如何通过浏览器扩展将 JavaScript 注入网页。 如何安装 IE 扩展 以管理员身份打开命令提示符并输入命令: Regsvr32.exe IeExtension.dll Popover页面打开...
输入sinject 是一个简单的 JavaScript 注入框架。 它的构建是因为循环依赖和模块加载器不能很好地协同工作,循环依赖和构造函数注入也没有。 循环依赖是否有害? 好吧,它们在某些架构中可能是代码异味。 然而,对于...
jquery.environment.js 环境 JavaScript 注入器安装在 jQuery 库之后包含脚本 < script src =" /path/to/jquery.environment.js " > </ script >用法初始化插件并将代码放在 jQuery document.ready 回调...
下面小编就为大家带来一篇浅谈html转义及防止javascript注入攻击的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
浏览器扩展,可将HTML,CSS或JavaScript注入任何网页。 将HTML,CSS或JavaScript注入您喜欢的网页。 每次访问指定网站时,都要保存并应用所做的更改。 比“检查元素”更好,因为它会在重新加载页面后保留。 如何...
通过使用javascript注入,用户不用关闭网站或者把页面保存在他的PC上就可以改变网站中的内容.这是由他的浏览器的地址栏完成的. 命令的语法看上去像这样: Copy code javascrit:alert(#command#) 比方说如果...
要求:此脚本仅适用于带有Chrome/Chromium JavaScript 注入将视频从 canalplus.fr 投射到您的 Chromecast。 原理很简单:使用书签在当前选项卡上注入injector.js来查找视频文件链接并显示一个小图标将它们投射到您...
注射剂 Flask服务器,可让您将JavaScript注入到Internet上的任何页面
这是一个坏主意,因为这个验证码很容易被打败——即使你的网络自动化测试工具不允许 javascript 注入! 这是一个简单的脚本,可以解决上。 提示:使用您的自动化 Web 测试工具提取 $('.realperson-text').text()
在给定网站中注入JavaScript。 这个chrome扩展的目的是在每次页面加载时将Java脚本注入到目标URL中。 你可以注入你最喜欢的脚本来扩展页面功能。 特征 - 添加或不添加正则表达式的网址 - 保存你的网址列表,并内联...
应同学邀请,演示如何使用 PyQt5 内嵌浏览器浏览网页,并注入 Javascript 脚本实现自动化操作。 下面测试的是一个廉价机票预订网站(http://www.flyscoot.com/),关键点如下 使用 QWebEngineView 加载网页,并显示...
↷电子注入在这里有帮助 :man_with_Chinese_cap: electronic-inject是一个应用程序包装程序,它利用远程调试控制台将javascript代码注入基于电子的应用程序中。 例如,启用内置开发者控制台等其他本来不可用的功能...
Monkey Patch是一个扩展,允许在VSCode浏览器和主进程中执行任意JavaScript 它既可以直接通过配置选项使用,也可以由其他使用API的扩展使用。 通过更新后自动检查修补状态并提示用户重新修补,Monkey Patch...