[网安中国行](misc)


http://115.28.90.49:23080/index.php?action=front&mode=register
查看url , 感觉可以任意文件包含
尝试使用 php 协议
利用 filter 可以读取到任意文件源码

image.png
[网安中国行](misc)_第1张图片
image.png

$value){
        if(!is_array($value)){
              !get_magic_quotes_gpc()&&$value=addslashes($value);
              $array[$key]=$value;
        }else{

          $array[$key] = d_addslashes($array[$key]);
        }
    }
    return $array;

}

$_POST=d_addslashes($_POST);
$_GET=d_addslashes($_GET);


include_once('common.php');

if(!isset($_GET['action'])||!isset($_GET['mode'])){

    header("Location: ./index.php?action=front&mode=login");

}elseif(!preg_match('/\.{2}/is',$_GET['action'])&&preg_match('/^[0-9A-Za-z]+$/is',$_GET['mode'])){
    $action=$_GET['action'];
    $mode=$_GET['mode'];
    $file=$action.'/'.$mode.'.php';
    
    // echo $file;

}else{

    die("Invalid Request!");
}
include($file);

先把所有文件都读取下来再说

query($sql) or die("查询数据库出错!");
        
        return $res;
        
}

function encode($str){
    return md5($_SESSION['SECURITY_KEY'].$str);

}

function set_login($uname,$id,$level){
     $_SESSION['userid']=$id;
     $_SESSION['level']=$level;
     
     $endata=encode($uname);
     setcookie("uid","$uname|$endata");
     
}

function check_login(){

    $uid=$_COOKIE['uid'];
    $userinfo=explode("|",$uid);

    if($userinfo[0]&&$userinfo[1]&&$userinfo[1]==encode($userinfo[0])){
        return $_SESSION['userid'];

    }else{

        return FALSE;

    }

}

function get_level(){

    $uid=$_COOKIE['uid'];
    $userinfo=explode("|",$uid);

    if($userinfo[0]&&$userinfo[1]&&$userinfo[1]==encode($userinfo[0])){
        
        if($_SESSION['level']!=="0"){

            return $_SESSION['level'];
        }else{
            return FALSE;

        }
    }else{

        return FALSE;
    }

}


function get_page_size(){

      $sql="select num from page";
      $res=mysql_my_query($sql);
      $row=$res->fetch_assoc();
      return $row['num'];
}

function set_page_size(){
    
    $sql="update page set num=20";
    $res=mysql_my_query($sql);
    
}

function get_uname($userid){
       
       $sql="select uname from user where id='$userid'";
       $res=mysql_my_query($sql);
       $row=$res->fetch_assoc();
      return  htmlspecialchars($row['uname']);

}

结合之前扫描到存在 admin 目录
可以再来读取一下 admin 的文件

[网安中国行](misc)_第2张图片
image.png

index.php

alert('not login!');";
    echo("");
    die();

    // $result=mysql_my_query($sql);
}

?>




  
  记事本管理系统
  
  
  
  
  
  
  
  


记事本管理系统后台

welcome:admin
userid:1


条笔记 fetch_assoc()){ echo ""; echo ""; echo ""; echo ""; echo ""; } ?>
user title content
".get_uname($row['userid'])."".$row['title']."".$row['content']."

© 记事本管理系统.

login.php

fetch_assoc(); //获取第一条记录

    if($row['id']){
        
        set_login($uname,$row['id'],$row['level']);
        
        header("Location: ./index.php?action=admin&mode=index");
        exit();
    }else{
                
        echo("");
    }

}

?>




  
  记事本管理系统
  
  
  
  
  
  
  
  


记事本管理系统后台


管理员登录








© 记事本管理系统.

alert('update  success!');";
                echo("");

          }else{
               echo "";
               die();
          }
      }
}else{

    echo "";
    echo("");
    die();
    // $result=mysql_my_query($sql);
}

?>




  
  记事本管理系统
  
  
  
  
  
  
  
  


记事本管理系统后台


设置显示条数





© 记事本管理系统.

这里存在二次注入

if($userid!==false&&$level!==false){
      if(isset($_POST['page'])&&isset($_POST['TOKEN'])){
          $page=$_POST['page'];
          $TOKEN=$_POST['TOKEN'];

          if($TOKEN!=$_SESSION['CSRF_TOKEN']){
            die("token error!");
          }

          if(!is_numeric($page)){
              die("page must be a number!");   
          }
          if($page<1) $page=1;

          $sql="update page set num=$page";
          $res=mysql_my_query($sql);
          if($res){
                echo "";
                echo("");

          }else{
               echo "";
               die();
          }
      }
}else{

    echo "";
    echo("");
    die();
    // $result=mysql_my_query($sql);
}
[网安中国行](misc)_第3张图片
image.png

通过二次注入拿到 :

database :
information_schema,ctf,mysql,performance_schema

ctf : tables :
flags,note,page,user

flags : 
id,flag

page : 
num

note : 
id,content,title,userid

user : 
id,uname,password,level,Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show

直接获取flag的内容为 :

image.png
[网安中国行](misc)_第4张图片
image.png
[网安中国行](misc)_第5张图片
image.png
admin管理员的笔记此内容无法删除asla/5ebe2294ecd0e0f08eab7690d2a6ee69/reverseit1

好像是一个路径 , 下载得到一个 .net 的二进制程序
逆向一下看看

[网安中国行](misc)_第6张图片
image.png

只需要绕过这些正则匹配就可以了
最终flag为 :

EKO{ooOOoo_sup3r_r3g3x_challenge_OOooOO}

你可能感兴趣的:([网安中国行](misc))