再谈javascript注入 黑客必备!


Posted in Javascript onSeptember 14, 2016

什么是javascript注入攻击?

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 相关文章推荐
优化JavaScript脚本的性能的几个注意事项
Dec 22 Javascript
ASP中Sub和Function的区别说明
Aug 30 Javascript
使用jquery插件实现图片延迟加载技术详细说明
Mar 12 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 Javascript
轻松掌握JavaScript中介者模式
Aug 26 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
微信小程序实现MUI数字输入框效果
Jan 31 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 Javascript
AngularJS 表达式详解及实例代码
Sep 14 #Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 #Javascript
js注入 黑客之路必备!
Sep 14 #Javascript
AngularJS 模块化详解及实例代码
Sep 14 #Javascript
AngularJS 过滤与排序详解及实例代码
Sep 14 #Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 #Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
You might like
PHP实现分页的一个示例
2006/10/09 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
javascript常见用法总结
2014/05/22 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
Python生成器generator用法示例
2018/08/10 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
企业总经理职责
2014/02/02 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2014年物业公司工作总结
2014/11/22 职场文书