专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Html教程 » 利用javascript绕过一些简单的或者更高... »正文

利用javascript绕过一些简单的或者更高...

来源: 发布时间:星期二, 2008年11月18日 浏览:76次 评论:0
本教程主要介绍了如何利用javascript绕过一些简单的或者更高级一点的html表单限制及cookie/session验证.
简单的表单限制
1.绕过必填表项
你会经常碰到一些页面需要你填满所有的表项才能提交,但是我们完全可能绕过这些限制.如果你仔细看一下页面的源代码,然后找到关于表单提交的那部分代码,你会发现form标签中有一个onsubmit属性.当你看到这个属性的时候,我们就很有希望尝试一下绕过这些限制.大家都知道的,javascript可以控制页面中的所有元素,包括表单元素.因此,我们可以利用javascript修改、删除以及添加任意元素到我们浏览的每一个页面.
因此,我们就可以利用javascript清除表单中的ousubmit属性,这么我们就可以不受限制的成功提交表单了.
onsubmit
属性通常指向了一个函数,这个函数是用来检查提交form表单数据的正确格式的.(译者注:我这里以国内某免费邮箱申请页面为例):
function fCheck(){
if( !form.readed.checked )
{
alert("您需要接受服务条款后才能注册!");
form.readed.focus();
return false;
}
...
<form action="reg2.jsp" method="post" name="form"
>
...
</form>
关于fcheck()函数的详细介绍不在本文的讨论范围之内,怎么编写还请大家自己去查相关资料.通过上面的代码大家可以看出来如果你有些表单项没有填写(比如一些单选了或者多选项等等)的话,表单是无法提交的.现在我们就要修改onsubmit属性,利用javascript让它直接返回true即可以采用下面两种方法:
document.forms[x].;
or
document.form.;
使用这两个
语句都可以使表单无限制的成功提交.但关键就在于我们如何执行上面javascript语句呢?其实我们可以直接把此语句输入到地址栏中,然后回车就可以执行了.语句如下:
javascript:document.form.;
但是仅仅是上面的语句是不会成功的,因为上面语句返回的值会被直接写入到页面中,我们无法继续填写表单了.所以我们必需避免值被写入到页面中,方法就是利用alert()函数:
javascript:alert(document.form.);

运行上面的语句会弹出一个对话框内容是"return
true;",而不会被写入到页面中了.现在你可以毫无限制的任意填写你的表单内容了.(译者注:以下测试是以某国内免费邮箱申请页面为例):
再没有解除限制前,如果密码你没有输入的话会弹出如下图的对话框:


这个时候我们按照上述俄方法先查看其源代码,找到提交form表单的那句代码如下:
<form action="reg2.jsp" method="post" name="form"
>
知道其name为form,下面我们在地址栏中输入如下语句:
javascript:alert(document.form.);
然后回车,如下图:
这个时候我们再重新注册以下,密码栏依然不输入,然后提交表单结果如下图:


呵呵..是不是绕过去了...继续发挥看大家伙自己的了.

2. 更改表项内容
当你成功尝试更改了表单的onsubmit属性可以做你想做的什么事情后,我们可以想想我们到底受到了什么限制?当然,你现在可以修改表单的onsubmit属性了,那么同样的,我们可以利用此方法修改页面中的任意对象.就像下面这样:
javascript:alert(document.spamform.fieldname.value="Dr_aMado
was here!");
or
javascript:alert(document.forms[x].fieldname.value="Dr_aMado
was here!");

呵呵,很简单的三?你可以修改你认为可以修改的任何东西了..just do it!

SQL注入
1.利用表单优势

SQL注入大家都很熟悉了,我这次主要跟大家解释一下漏洞表单是否会被正确的处理.
取得数据库信息
一个经常用的取得系统信息的方法是通过故意在sql查询中引发错误从而从网站数据库中取得特定的信息(译者注:就是我们俗称的"爆"什么社么)引发错误的方式可以通过搜索表单,动态链接以及session
cookies.大多数介绍sql注入的文章都是介绍如何利用动态链接和text
boxes执行sql查询语句的.但是我认为,这些漏洞在其它类型中更常见(select boxes, hidden
fields, checkboxes and radio buttons, and cookies!).
混和数据类型如果没有很好的编码很容易造成一个页面的崩溃.比如对"memberinfo.php?o_id=1"这样的链接,在其后添加一个双引号或者单引号,幸运的化你会得到一个包含部分sql查询语句的调试信息.当你得到了你需要的信息,你可以确定出下一步该如何去做.
更改表项的值
第一个应该考虑的表单就是用户资料页面.大多数用户资料页面都没有很好的过滤,比如select
boxes表单项.一中利用此漏洞的方法就是在这个表单项的值域中插入一个sql查询语句.在IE的地址栏中如下输入:
javascript:alert(document.profileform.user_sex.value="gay\',user_pasword=\'HACKED\'
WHERE user_id=1#");

我们假设服务端的查询语句像下面这样:
"UPDATE user_data SET
user_password='$user_password',user_email='$user_email',user_sex='$user_sex'
WHERE user_id=$user_id";
那么插入我们的sql语句后的查询语句就如下所示:
"UPDATE user_data SET
user_password='mypassword',user_email='myemail',user_sex='gay',user_password='HACKED'
WHERE
user_id=1 #' WHERE user_id=7382";
"#"这个是sql的注释符.

2.绕过session cookies
绕过基本的session cookie验证
很多情况下会话处理都是采用的cookie.如果页面没有正确处理session
cookie,一个攻击者可以利用此缺陷更改自己的用户身份为其它用户.
cookies保存在"window.document.cookie".使用javascript我们可以擦除,编辑,创建任意站点的cookies.这个要比一般的攻击方式复杂得多.这里我只简单的介绍一下"
查看cookies:
javascript:alert(unescape(document.cookie));
修改cookies数据:
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(c(prompt("cookie
name:",""),prompt("replace this
value:",""),prompt("with::","")));

假设你在www.ima13370h4x0r.net以"John Doe"身份登录,你获得的cookie如下:
Sessi:3:{s:11:"SessionUser";s:5:"75959";s:9:"SessionID";i:70202768;s:9:"LastVisit";i:1078367189;}

我们只关心"75959"这个值,因为它是user_id的值.很多时候,你会发现有的站点把一些关键数据(比如user_id)保存在cookie中,这是个很严重的漏洞,因为任何用户都可以修改他们的user_id值为其它用户比如管理员用户的user_id值.
.
一旦你声明了window.c函数后,修改cookie的值就变得容易得多.首先把s:5:"75959"修改为s:x:"ADMINID",其中x是新值的长度.比如,你想把75959改为1,那么你必需把s:5:"75959"改成s:1:"1".有的时候一些站点会使用带WHERE子句的sql查询语句保持用户登录状态这个时候你需要把75959该为类似"13
or 1=1"这样的值.
注意:
嵌入的javascript声明可以加到你的浏览器的收藏里,这样可以轻轻一点即可.声明你自己的函数用下面的形式:
"alert(window.newfunction = function
标签:

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: