网站地图    收藏   

主页 > 后端 > 网站安全 >

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

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 发现注入点:http://www.xxx.com/xx.php?id=xxxx直接sqlmap脱库,发现有admin表,内容是显示的是账号admin密码admin,这时心里高兴了下,没加密。可是,曲折的在后面呢 !管理后台很容易找到,直...

发现注入点:
http://www.xxx.com/xx.php?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,密码出来了。
登陆后台页面,发现三个上传点,第一个是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()
上传之前访问本地
http://www.2cto.com /time.php
返回时间:1345279425
这时快速的去目标网站去上传图片,多上传几个,道理你懂的,呵呵
上传完了之后在访问http://127.0.0.1/time.php
记下时间1345279475
相差50秒,也就是说上传的文件名在1345279425d.php—-1345279475d.php
之间.好吧,去碰吧。。。。。。。。。。。。。。。。。。。。。。。。。
碰啊碰。。。。。碰到了啊。。。。。。
菜刀连接,,成功!!!!!!!!!
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论