信息来源:邪恶八进制 中国
原文出处:Unknown
声明:本文是外国一同行朋友给我的email中附带的,原作者是个叫Dr_aMado写的.我连翻译带实践花了一个小时的时间,所以转帖请注明出处.
HACKING WITH JAVASCRIPT
本教程主要介绍了如何利用j avascript绕过一些简单的或更高级一点的html表单限制及cookie/session验证.
简单的表单限制
1.绕过必填表项
您会经常碰到一些页面需要您填满任何的表项才能提交,但是我们完全可能绕过这些限制.假如您仔细看一下页面的源代码,然后找到关于表单提交的那部分代码,您会发现form标签中有一个onsubmit属性.当您看到这个属性的时候,我们就很有希望尝试一下绕过这些限制.大家都知道的,j avascript能够控制页面中的任何元素,包括表单元素.因此,我们能够利用j avascript修改、删除连同添加任意元素到我们浏览的每一个页面.
因此,我们就能够利用j avascript清除表单中的ousubmit属性,这么我们就能够不受限制的成功提交表单了.
onsubmit 属性通常指向了一个函数,这个函数是用来检查提交form表单数据的正确格式的.(译者注:我这里以国内某免费邮箱申请页面为例):
function fCheck(){
if( !form.readed.checked )
{
alert("您需要接受服务条款后才能注册!");
form.readed.focus();
return false;
}
...
<form action="reg2.jsp" method="post" name="form" onSubmit="return fCheck()">
...
</form>
关于fcheck()函数的周详介绍不在本文的讨论范围之内,怎么编写还请大家自己去查相关资料.通过上面的代码大家能够看出来假如您有些表单项没有填写(比如一些单选了或多选项等等)的话,表单是无法提交的.现在我们就要修改onsubmit属性,利用j avascript让他直接返回true即能够采用下面两种方法:
document.forms[x].onsubmit="return true;";
or
document.form.onsubmit="return true;";
使用这两个 语句都能够使表单无限制的成功提交.但关键就在于我们如何执行上面j avascript语句呢?其实我们能够直接把此语句输入到地址栏中,然后回车就能够执行了.语句如下:
j avascript:document.form.onsubmit="return true;";
但是仅仅是上面的语句是不会成功的,因为上面语句返回的值会被直接写入到页面中,我们无法继续填写表单了.所以我们必需避免值被写入到页面中,方法就是利用alert()函数:
j avascript:alert(document.form.onsubmit="return true;");
运行上面的语句会弹出一个对话框内容是"return true;",而不会被写入到页面中了.现在您能够毫无限制的任意填写您的表单内容了.(译者注:以下测试是以某国内免费邮箱申请页面为例):
再没有解除限制前,假如密码您没有输入的话会弹出如下图的对话框:

这个时候我们按照上述俄方法先查看其源代码,找到提交form表单的那句代码如下:
<form action="reg2.jsp" method="post" name="form" onSubmit="return fCheck()">
知道其name为form,下面我们在地址栏中输入如下语句:
j avascript:alert(document.form.onsubmit="return true;");
然后回车,如下图:

这个时候我们再重新注册以下,密码栏依然不输入,然后提交表单结果如下图:

呵呵..是不是绕过去了...继续发挥看大家伙自己的了.
2. 更改表项内容
当您成功尝试更改了表单的onsubmit属性能够做您想做的什么事情后,我们能够想想我们到底受到了什么限制?当然,您现在能够修改表单的onsubmit属性了,那么同样的,我们能够利用此方法修改页面中的任意对象.就像下面这样:
j avascript:alert(document.spamform.fieldname.value="Dr_aMado was here!");
or
j avascript: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的地址栏中如下输入:
j avascript: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语句后的查询语句就如下所示:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



