背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  
阅读新闻

酷蝶XP留言簿跨站利用

[日期:2008-01-21] 来源:  作者:未知 [字体: ]

作者:樱花浪子
来源:http://www.hacklu.net
申明:本文已发表黑客手册,转载请注名版权,此文版权归樱花浪子和黑客手册所有. !
转载请注明!
 

 记得在某个论坛上看过某牛人说过一段话,有的时候看文章还不如看LCX对文章的点评,俺对这段话记忆犹新,
从那以后俺每次都注意LCX对文章的点评,正好看见黑手8月份“163博客我又来了”LCX对文章的点评是:为什么每个
人提到跨站,只是弹出一个alert就完事了呢?其实跨站语句可以做很多的事,发现容易,利用较难,所以跨站被某
牛人评为自慰式漏洞……

 俺最近参考以前牛人写的跨站文章,自己又研究一下,跨站如果跨得漂亮了一样不比注入的威力小,赶紧从网上找
了一个PHP文本留言本,测试起来,首先当然是来个<script>alert("樱花浪子")</script>,却完完全全返回来了,查了
一下网页代码,已经被转换成&lt;script&gt;alert("樱花浪子")&lt;/script&g了,如图1。

点击在新窗口中浏览此图片

看看它的代码是怎么写的,如下:
function addpost(){   //添加留言
  global $submit,$lname,$admin,$u_name,$u_face,$u_emote,$u_hide,$u_sex,$u_mail,$u_oicq,$u_page,$u_text;
  global $user_time;
  if($submit){
    if(($u_name=trim($u_name))=='') showerro ("昵称不能为空,请重新填写!");
    elseif(time() - $user_time < $admin[timeout]) showerro ("为防止灌水,发留言间隔为 $admin[timeout] 秒");
    elseif (checkemail($u_mail)) showerro("你邮件没有填写或填写有错误!");
    elseif (eregi("[<>(),#|;%/$\]",$u_mail)) showerro("邮件填写不能包含特殊字符!");
    elseif (strlen($u_name) >15) showerro("昵称太长,非法ID!");
    elseif (eregi("[<>(),#|;%/$\]+",$u_name)) showerro("昵称只能是字母数字或中文,请不要包含< > | ?等特殊字符");
    elseif ($u_oicq && !ereg("^[0-9]{5,13}$",$u_oicq)) showerro("OICQ号码只能为数字!");
    elseif (eregi("[<>(),#|;%$\]+",$u_page)) showerro("主页填写有错误,主页名字只能包含字母数字下划线和-号!");
    elseif (!eregi("^http://",$u_page)) showerro("主页开头要加http://");
    elseif (($u_text=trim($u_text))=="") showerro("留言内容不能为空,请重新填写!");    //这里好象不是很严格啊
    elseif (strlen($u_text)>$admin[maxlen]) showerro("留言太长了,想把留言簿撑爆呀!");
    else {
      if ($u_oicq=="") $u_oicq="未知";
      if ($u_page=="") $u_page="http://";
      $u_text  =  safeinput($u_text);                  //safeinput自定义函数
      if ($u_hide) $u_text='

隐藏内容
这部分内容只能在登入之后看到。请先 注册 或 登入

';
      代码略……
      showok("留言成功,感谢你对我们的支持!");
    }
  }else
    showerro("非法操作!");

在看看safeinput函数:

function safeinput($d) { //输入内容安全转换
  $d = str_replace("\t",'',$d);
  $d = str_replace("\r",'',$d);
  $d = str_replace('<','&lt;',$d);
  $d = str_replace('>','&gt;',$d);
  $d = str_replace("\n",'<br>',$d);
  $d = str_replace('|','│',$d);
  $d = str_replace('  ',' &nbsp;',$d);
  $d = preg_replace("/\[\/HIDE\]/is",'',$d);// 悄悄话
  return $d;
}
 
 好象没有[和]呀,在签写留言中试了一下javascript:alert('樱花浪子')" onload="if(this.width>450) {this.resized=true; this.width=450;}" border=0>,成功了,如图2,


点击在新窗口中浏览此图片

12下一页  GO
阅读:
录入:chaille

推荐 】 【 打印
上一篇:内网渗透如何打开突破口
下一篇:一个暴jsp源码的网页
Google
 
Internet www.zxyf.net
相关文章      
本文评论       全部评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款