当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

记一次不同寻常的网站渗透测试过程,上传基于time()

时间:2013/4/19 12:09:00 作者:平凡之路 来源:xuhantao.com 浏览:

发现注入点:
?id=xxxx 
直接sqlmap脱库,发现有admin表,内容是显示的是账号admin密码admin,这时心里高兴了下,没加密。可是,曲折的在后面呢 !管理后台很容易找到,直接上admin admin 可是,显示密码不对,怎么回事??
在看看数据库,翻遍数据库,账号密码也就这一个admin admin,(事实上也是这么回事) ,看看它登陆页面的源码吧,注入点能爆出路径,可以读出文件内容,直接读login.php
内容如下:
<?
 $filename = "password.txt";
 $fd = fopen( $filename, "r" );
 $contents = fread($fd, filesize($filename));
 fclose( $fd );
 if($T1=="admin"){
     if($T2==$contents){
        setcookie("ad","$T1");
        header("location:editor/edit_index.php");
     }else{
     ?>
      <script language="javascript">
      alert("密码错误");
      window.history.back();
      </script>
     <?
   }
 }else{
   ?>
    <script language="javascript">
      alert("用户名错误");
      window.history.back();
      </script>
   <?
   }
?>
看到了吧!!!当时我就愣了一下,靠。。。。。。。。你妹的,怪不得找不到密码呢
好了,直接在域名后面加password.txt,密码出来了。
登陆后台页面,发现三个上传点,www.xuhantao.com,第一个是eweb3.8 (直接放弃),第二个上传点控制
的非常死,各种变换都不行。还是第三个注入点有用,直接上传d,php,提示上传成功,
呵呵,上传是成功了,但是找不到路径,找啊找就是找不到路径。。晕啊。。。。。。。。。
找上传图片的路径,这时在读处理上传的php代码,代码如下
<?
if($_FILES['sytp']['name']!="none"&&$_FILES['sytp']['name']!=""){//判断上传文件是否为空
$thistype=$_FILES['sytp']['type'];//将上传的类型传给$thistype
//echo time().$_FILES['sytp']['name'];
//exit;
if("image/pjpeg"==$thistype or "application/x-shockwave-flash"==$thistype or "image/gif"==$thistype){//判断是否是我要的类型
  $file_name = "shouyetupian/".time().$_FILES['sytp']['name'];//time()是为了区分两个文件不是同一时间传的
include("../connect.php");//调用connect.php里的内容
$sql="select count(*) from shangchuantu";
$result=mysql_query($sql,$db);
$jie=mysql_fetch_row($result);
$zhong=$jie[0];
if($zhong<5){
$sql1="select max(paixu) from shangchuantu";
  $result1=mysql_query($sql1,$db);
 $jie1=mysql_fetch_row($result1);
 $zhong1=$jie1[0];
$zhong1=$zhong1+1;
  $query="insert into shangchuantu values('','$file_name','".$_POST['url']."','','$zhong1')";
  mysql_query($query,$db);
 
  if(!move_uploaded_file($_FILES['sytp']['tmp_name'], $file_name)) {//上传文件,$_FILES['sctb']['tmp_name']临时目录传到$file_name实际目录
 ?>
  <script language="javascript">
  alert("文件上传失败,请稍候再试");
  window.history.back();
  </script>
 <?
}else{//上传成功
?>
<script language="javascript">
alert("文件上传成功!");
  location.href="shanchuantu.php";
 
</script>
<?
 
}
}else{
?>
 <script language="javascript">
  alert("图片不能超过5张");
  window.history.back();
  </script>
<?
}
}else{//如果类型不对
 ?>
  <script language="javascript">
  alert("文件上传失败,请稍候再试");
  window.history.back();
  </script>
 <?
 
}
}else{
?>
<script language="javascript">
  alert("请选择上传图片");
  window.history.back();
  </script>
<?
}
?>
关键是file_name 是怎么形成的,
$file_name = "shouyetupian/".time().$_FILES['sytp']['name'];
Time()
返回自从Unix 纪元(格林威治时间1970 年1 月1 日00:00:00)到当前时间的秒数
比如你上传文件名为d.php,上传之后文件名为:     当前时间d.php
从代码页可以看出,是不返回上传后的文件名,这时怎么办,根据时间去碰文件名
本地搭建php服务器,涛涛电脑知识网,echo 出time()
上传之前访问本地
/time.php
返回时间:1345279425
这时快速的去目标网站去上传图片,多上传几个,道理你懂的,呵呵
上传完了之后在访问
记下时间1345279475
相差50秒,也就是说上传的文件名在1345279425d.php—-1345279475d.php
之间.好吧,去碰吧。。。。。。。。。。。。。。。。。。。。。。。。。
碰啊碰。。。。。碰到了啊。。。。。。
菜刀连接,,成功!!!!!!!!!
 

相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1