「配枪朱丽叶。」

RootのCTF学习笔记。

upload-labs文件上传靶场练习(1~15)

文件上传:
1.第一关,只是在前端验证了文件格式,上传一个shell.jpg,然后抓包改成shell.php绕过。
2.只是验证了Content-Type,上传shell.php抓包修改为Content-Type:image/jpeg上传。
3.可上传php3,php5...等这样可以被服务器解析的后缀名。
4.过滤了好多,但是没过滤.htaccess。可以重写文件解析规则绕过。传入一个名为“.htaccess”的文件,然后写入
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
上传一个1.jpg 内容为一句话木马。成功解析。
5.查看源码,发现没有把文件名转换为小写,传入shell.Php
6.上传“shell.PHP
7.上传“shell.php.”
8.在php+windows的情况下:如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名。
9.只删除了一次“.” 所以可以构造“shell.php. .”
10.构造“shell.pphphp”
11.将save_path=../upload/改为save_path=../upload/shell.php%00,filename="shell.jpg"。这样就构造了%00截断。但是00截断要注意的是php版本小于5.3.4,而且magic_quotes_gpc为OFF状态。
12.同样是00截断,对照11题,这里把存储路径改为了POST请求,因为POST不会像GET对%00进行自动解码,所以需要在二进制中进行修改。save_path=../upload/改为save_path=../upload/shell.php+ 然后在hex中把“+”(2b)改为00,filename="shell.jpg"
13.上传时内容里添加GIF89a,上传成功,但是不能解析,需要配合文件包含漏洞来继续操作。
14.用了getimagesize()函数来检查图片,但是getimagesize也是根据文件头判断。image_type_to_extension() 函数用于获取图片后缀。
15.exif_imagetype的作用也是根据文件头判断文件类型,绕过方式同上一关。