zoukankan      html  css  js  c++  java
  • 攻防世界 ics-07

    攻防世界 ics-07

    点击之后发现有个项目管理能进,点进去,点击看到源码,如下三段

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

    大概思路是在id满足第三段代码的情况下,使$_SESSION['admin'] = True。然后在以POST方式提供con和file,当file满足条件时,会将con的内容写入uploaded /backup /filename中。在在第一段中包含此文件,可以得到flag.php

    先在view-source.php?page=flag.php页面,如下图,输入1' or '9'='9,满足了第三段代码的条件

    构造以下请求

    在/uploaded/backup/aaa.txt确实存在,证明攻击奏效,下面主要是如何绕过第二段代码。

    img

    最终代码如下

    然后菜刀链接,找到flag页面,完毕

  • 相关阅读:
    Event notifications
    twobin博客样式
    Http协议
    ASP.NET Web API自身对CORS的支持: CORS授权检验的实施
    理解计算机系统3
    游标-Oracle游标汇总
    Oracle10g 回收站及彻底删除table : drop table xx purge
    ora-01031:insufficient privileges
    &&运算符和||运算符的优先级问题 专题
    oracle connect by 和start with
  • 原文地址:https://www.cnblogs.com/iloveacm/p/13193291.html
Copyright © 2011-2022 走看看