
execping这是一个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\Desktop127.0.0.1 type C:\Users\Z\Desktop\flag.txt成功拿到flagexeceval$code $_POST[code]; eval($code);eval()把字符串当成 PHP 代码执行。这也是程序没有进行过滤导致将用户的非法输入进行执行我们输入echo hello;程序看到的是eval(echo hello;);便会打印hellophpinfo();eval(phpinfo(););system(whoami);system(type C:\Users\Z\Desktop\flag.txt);发现不会执行这是因为在 PHP 双引号字符串中反斜杠 \ 是转义符因此 Windows 路径容易出问题system(type C:\\Users\\Z\\Desktop\\flag.txt);执行成功拿到flag