目录
cd查看文件夹下的文件
1.什么是RCE
远程命令/代码执行漏洞,简称为RCE漏洞,可以直接向服务器后台远程注入操作系统的命令或者代码,从而拿到服务器后台的权限。RCE分为远程执行命令(执行ping命令)和远程代码执行eval。
2.RCE漏洞分类
命令注入、文件包含、eval执行
3.命令注入
先了解一下Linux文件查看常用命令:
- cat:由第一行开始查看文件
- tac:cat倒着写,由最后一行到第一行查看
- more:逐项查看文件,按空格继续,最后自己退出
- less:逐行查看文件,按方向键,不可主动退出,按q退出
- head:只查看文件前十行
- tail:只查看文件后十行
(1)什么是命令注入
命令注入就是通过控制外部的参数达到执行系统命令的效果
(2)RCE命令注入分类
无过滤、过滤cat、过滤空格、过滤目录分隔符、过滤运算符、综合过滤练习
1.过滤cat 使用单引号 c’’at,使用双引号 c””at,利用Shell 特殊变量绕过 ca$@t
2.过滤空格 < 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等
3.过滤目录分隔符 可用&&运算符将命令连接
4.Flag可用正则表达式f***替换
5.用%0a替换;
PHP执行系统命令的4个方法 :
*system() 函数:system 函数执行系统命令,并将输出直接打印到标准输出。它的返回值是命令的最后一行输出或者返回状态码(命令成功执行返回0)。
*shell_exec 函数:shell_exec 函数执行系统命令,但它将命令的输出作为字符串返回,而不是打印到标准输出。如果命令没有输出,则返回空字符串。
*exec 函数:exec 函数执行系统命令,并将输出存储到一个数组中,每一行命令输出作为数组的一个元素。它的返回值是命令的最后一行输出或者返回状态码。
*passthru 函数:passthru 函数执行系统命令,并直接将命令的输出发送到标准输出。它不会返回任何输出结果,而是直接将输出显示在屏幕上。
原文链接:https://blog.csdn.net/csjjjd/article/details/135004789
windows系统命令拼接方式
|:直接执行后面的语句。
||:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假。
&:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
&&:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
Rceeee(web)
<?php
error_reporting(0);
highlight_file(__FILE__);
function strCheck($cmd)
{
if(!preg_match("/\;|\&|\\$|\x09|\x26|tac|cat|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){
return($cmd);
}
else{
die("你的想法很有趣.....");
}
}
$cmd=$_GET['cmd'];
strCheck($cmd);
shell_exec($cmd);
?>
preg_match 正则匹配了很多东西,cat跟flag也被过滤了
shell_exec 让页面无回显
linux中 “tee” 是从标准输入读取,再写入标准输出和文件
在PHP中 ">" 是表示把什么写入什么文件的意思。
无回显,那就把它写进一个文件,然后访问这个文件即可
?cmd=ls /|tee 1.txt
?cmd= c''at \f*** |tee 1.txt(写进1.txt文件里)