漏洞文件:
./inc/module/upload_img.php
先跟进 del_file 函数:
在 del_file 函数中首先执行了unlink操作,然后接着进行了file_exists 判断。
这是为了删除权限不够的文件,我们应该是没办法找到这类文件。那么如何绕过这么点呢?
unlink:是删除文件,如果是文件夹则会删除失败。
file_exists:则会判断 文件 或 文件夹 是否存在。所以当我们传递一个文件夹的时候既可以绕过。
最开始还有一个对时间的检测,绕过如下:
./inc/module/upload_img.php 该文件 默认是上传文件操作,我们可以在会员中心->编辑头像处上传文件,这样会导致创建一个以 年月日 命名的文件夹,就可以用来绕过第一个点了。
不过我们可以控制文件夹为这三个目录,相对来说会好一些:
然后就可以成功进入到 system 函数进行命令执行了。
多条命令用&连接,如果前面有一条命令错误,都会导致后面的执行失败。
也就是说我们必须要真正删除文件,然后在执行我们的命令。
最终exp为:
请勿用于非法操作,exp已去掉。
修改对应的文件路径。可以直接修改为你上传的那个头像路径,右键就可查看你头像的路径了。
效果如图:
还有一处老问题注入:
./inc/module/user.php
getip函数:./inc/function/functions.php
因为使用的PDO拓展,所以支持多语句执行。
这注入应该算修复失败遗留的注入。
原来的修复方式:./inc/function/global_admin.php
而且我们前台加载的公共函数库是 ./inc/function/functions.php 这个文件。修复到了后台加载的函数库。