XCTF Web 记录(ics-07)

ics-07

打开页面:
在这里插入图片描述
直接就有view-source,打开,一共三部分:

<?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');
    }

    ?>
<?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);
       }
     }
     ?>

这里session得是admin用户,然后会进行文件上传,需要绕过正则匹配。

<?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;
      }
     ?>

这里有sql语句的查询,但是使用了强比较。

获取变量的浮点值,且不能为1,变量的最后一位等于9。

思路整理:

session要是admin用户,sql查询可以解决。
先把文件名拼接到backup目录下,然后绕过正则,匹配最后一个点的后缀。
利用文件上传,上传一句话木马。

第一步:找到admin用户的sesssion。
payload:

只要1和9之间有字符即可。

第二步:绕过正则。

/.的方式绕过,这个方式的意思是在文件名目录下在加个空目录,相当于没加.

第三步:上传文件。

扫描二维码关注公众号,回复: 12781584 查看本文章

使用POST传入参数:
在这里插入图片描述

查看是否上传成功:
在这里插入图片描述

ok,蚁剑连接。

猜你喜欢

转载自blog.csdn.net/qq_45742511/article/details/114627533