设为主页 | 加入收藏 | 繁體中文

HACKING WITH JAVASCRIPT

  作者:无敌最寥寂[E.S.T]
  泉源:邪恶八进制 中国
  原文出处:Unknown
  声明:本文是外洋一同行朋友给我的email中附带的,原作者是一个叫Dr_aMado写的.我连翻译带实践花了一个小时的工夫,以是转帖请注明出处.
  HACKING WITH JAVASCRIPT                                               
  本教程主要先容了怎样利用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;
  }
  ...
 


  ...
 

  关于fcheck()函数的细致先容不在本文的讨论范畴之内,怎么编写还请大家自己去查相关资料.经过上面的代码大家可以看出来如果你有些表单项没有填写(好比一些单选了大概多选项等等)的话,表单是无法提交的.如今我们就要修正onsubmit属性,利用javascript让它直接返回true即可以接纳下面两种要领:
  document.forms[x].onsubmit="return true;";
  or
  document.form.onsubmit="return true;";
  使用这两个 语句都可以使表单无穷制的乐成提交.但关键就在于我们怎样实行上面javascript语句呢?实在我们可以直接把此语句输入到地点栏中,然后回车就可以实行了.语句如下:
  javascript:document.form.onsubmit="return true;";
  但是仅仅是上面的语句是不会乐成的,由于上面语句返回的值会被直接写入到页面中,我们无法继续填写表单了.以是我们必需避免值被写入到页面中,要领就是利用alert()函数:
  javascript:alert(document.form.onsubmit="return true;");
  运行上面的语句会弹出一个对话框内容是"return true;",而不会被写入到页面中了.如今你可以毫无穷制的任意填写你的表单内容了.(译者注:以下测试是以某海内免费邮箱请求页面为例):
  再没有解除限定前,如果密码你没有输入的话会弹出如下图的对话框:
  这个时候我们根据上述俄要领先查看其源代码,找到提交form表单的那句代码如下:
 

  知道其name为form,下面我们在地点栏中输入如下语句:
  javascript:alert(document.form.onsubmit="return true;");
  然后回车,如下图:
  这个时候我们再重新注册以下,密码栏依然不输入,然后提交表单结果如下图:
  --------------------------------------------------------------------------------
  呵呵..是不是绕已往了...继续发挥看大家伙自己的了.
  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如下:
  SessionData=a: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 (){...})"
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: