再谈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 相关文章推荐
jquery 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
js的表单操作 简单计算器
Dec 29 Javascript
jQuery之按钮组件的深入解析
Jun 19 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
javascript实现倒计时效果
Feb 17 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
Apr 26 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
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中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php时间戳转换代码详解
2019/08/04 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
Python实现自动签到脚本功能
2020/08/20 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
专科毕业生求职简历的自我评价
2013/10/12 职场文书
房地产项目策划书
2014/02/05 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
公司任命书模板
2014/06/06 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python