rce临时文件上传[RCE1]P8

/[A-Za-z0-9!~^|&]+/i 匹配了我能想到的所有绕过方法,想到临时文件上传,是否可以执行/tmp/?????????这个文件呢

/tmp/????????? 此文件是php的一个默认临时文件,文件名是随机的,如果php.ini没有设置upload_tmp_dir的时候,默认会读写系统的临时文件目录,(Windows 默认为 C:/windows/temp,Linux 为 /tmp)。

但是是当向服务器上任意php文件以multipart/form-data方式提交请求上传数据时,才会产生临时文件,可以通过phpinfo.php的信息泄露获得临时文件的路径,便可以让我们构造payload。

php post上传:创建临时文件 > 调用相关php脚本 > 在phpinfo中回显文件信息 > 删除临时文件

在linux系统中./可运行可执行文件,在文件中执行一个运行shell脚本的解释器,解释器有很多,例如:

#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f ./shell的时候相当于/bin/bash shell 还有很多有意思的用法
https://zhuanlan.zhihu.com/p/666028747

临时文件内容:

#!/bin/sh

id

执行临时文件命令

./tmp/????????? 构造payload >> ./???/????????? >> ./???/????????[@-[]

由于/???/?????????无法精准匹配,但是这个临时文件的特点是大小写字母混合随机生成的,所以通过找到一个表示“大写字母”的glob通配符,来实现精准匹配。

glob的通配符我们常用的有(* ? ** []) 在[1-9]中golb支持里面表示一个范围,可以使用ascii找到大写字母范围的一个字符,大写字母的范围位于"@"和[之间,并且不分字符前后顺序。

构建数据包:

需要构造一个post上传文件的数据包,从网上随便找一段html的文件上传代码,然后抓包拦截,把目标ip修改一下就好了。

我这里代码是 multipart/form-data 的方式提交请求上传数据的,别的我没有试过不知道有没有问题,注意在multipart/form-data方式中,作为分割使用的boundary字符串比定义处前面多倆--

附上html代码:

<html>
<head></head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

rce临时文件上传[RCE1]P8的更多相关文章

  1. 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上

    场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...

  2. 【转】JSP使用上传文件,并生产高清缩略图示例

    原文地址:http://blog.csdn.net/yakson/article/details/9875731 前言 刚开始本来只想来测试一下Thumbnails生成缩略图的效果的,顺便来学一下js ...

  3. 文件上传小技巧/后端处理【以php示例】

    引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮.但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?所谓后台的技巧,应该要包括上传得快一点,上 ...

  4. PHP 文件上传功能

    <?php /** * TestGuest Version1.0 * ================================================ * Web:2955089 ...

  5. jsp页面附件上传暂存的处理

    有没有遇到页面是新建一个新对象,对象里面需要上传附件,但是只有当对象保存时才将附件一同上传到数据库的情况? 这种情况的处理可以参考狐狸的思路: @jsp页面创建一个botton bn,该button的 ...

  6. Java文件上传细讲

    什么是文件上传? 文件上传就是把用户的信息保存起来. 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片.那么这张照片就应该要进行保存. 上传组件(工具) 为什么我们要使用上传工具? 为啥我 ...

  7. php文件上传原理详解(含源码)

    1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-da ...

  8. PHP学习笔记 02 之文件上传

    我们了解了表单传值后,这些我就可以完成PHP的文件上传了.我们了解PHP文件上传前,先了解PHP文件上传的原理. 一.PHP上传文件原理 第一步:将本地的文件通过form表单上传到服务器的临时目录中, ...

  9. 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.

    struts2 上传文件时,有时候会报这个错误. Unable to find 'struts.multipart.saveDir' property setting. Defaulting to j ...

  10. Laravel 文件上传失败的问题 error 7

    一个站点上传文件失败 error为7  UPLOAD_ERR_CANT_WRITE 临时文件上传不上  $_FILE打出来 Array(    [file] => Array        (  ...

随机推荐

  1. Adobe Photoshop cc2022 Mac中文破解版下载 支持intel/M1/M2/M3

    Adobe Photoshop cc2022 Mac版,支持intel.M1.M2.M3芯片,全系都能使用,最低系统需求:11.0以上.建议安装此版本或者ps2024版本. 下载地址放到最后,先来看安 ...

  2. uni-app之camera组件-人脸拍摄

    小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...

  3. chainLink vrf实验

    目标 用vrf写一个随机红包 数据结构 红包: struct Envelope { Type t; // 类型,只是erc20 和eth红包 ERC20 token; // erc20 ,如果是erc ...

  4. Asp.net core 学习笔记 Secret 和 Data Protect Azure key-vault & Storage Account 第 2 篇

    更新 30-04-2023 最新版本请看这 2 篇 ASP.NET Core – User Secret & Azure Key Vault 之前有写过 2 篇关于 key-vault 和 d ...

  5. SQL Server – 冷知识 (新手)

    前言 没有系统化学一本语言或技术, 那便会被一些冷知识坑. 这里做些记入. 变量作用域 SQL 是远古语法, 声明变量在最顶部就是一条上古法则. 如果我看见有了用这个法则写 C# 或 JS 我就会杀了 ...

  6. 课时05:Linux必备系统命令

  7. 读取.raw格式文件(学习记录)

    import cv2 #OpenCV包 import numpy as np # 首先确定原图片的基本信息:数据格式,行数列数,通道数 rows=886#图像的行数 cols=492#图像的列数 ch ...

  8. 墨天轮访谈 | Pika数据库陈磊:云时代下,键值数据库是否会被替代?

    分享嘉宾:陈磊 开源数据库Pika项目PMC核心人员 整理:墨天轮社区 导读 大家好,今天我分享的主题是:KV数据库,云时代的文件存储. 随着AI和机器学习等技术的发展,数据演变为了十分宝贵的资源,数 ...

  9. 墨天轮PostgreSQL精品学习资源合集(含基础手册、实操技巧&案例、书籍推荐)

    近日,PostgreSQL 15 的第一个 beta 版本发布,这一最新版本在开发者体验.性能表现等方面都有提升.从最新的DB-Engines排名可以发现,PostgreSQL近十年来得分一路高涨,目 ...

  10. netCore 封装一个检验邮箱的类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...