XCTF:ics-07

  • Post author:
  • Post category:其他


看源码。

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

三段PHP代码。

第一段代码好理解,也不需要绕过。

第二段是可以写入文件的,所以很重要,而且其中还有一个正则表达式。

第三段有个SQL语句,( 一开始还以为SQL注入,不过没有回显点)。

根据session,判断要先解决第三段PHP代码。绕过id的限制,使session为admin。

http://111.200.241.244:59473/index.php?page=flag.php&id=1%279&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2#

这个id绕过有很多种方法,就随便试吧。



版权声明:本文为qq_42702981原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。