【CTF笔记】文件上传漏洞
一、后门代码
1、一句话后门
1 |
|
注意,在PHP中配置 short_open_tag=on 时,图片中不能含有 <? ,有会影响PHP代码的解析,导致图片马解析错误
2、其他后门代码
后门代码变形:WebShell变形
哥斯拉WebShell免杀:Github链接
注: assert() 函数在高版本好像不能直接用,详见:PHP手册
二次渲染生成图片马(如upload-labs16关)见:二次渲染
二、WAF绕过
1、允许的后缀名测试
使用 BurpSuite 中的 Intruder 爆破可行的后缀名,包括大小写等
字典见:字典
2、更改数据包内容
a、Content-Type
更改Content-Type为图片等,常见的见:MIME类型
b、文件头
更改文件头实现绕过,常用的文件头见:文件头
c、加入特殊字符
如:
1 |
|
注意,可以使用双写某些字符实现对单次过滤的绕过
d、更改保存路径
当可以更改保存名称时,可以更改保存名称为 WebShell.php/.
当通过数组截取后缀名来判断时,可以使用
1 |
|
原理见:upload-labs21
e、其他
其他中的方法来自小迪师傅,因脑洞太大此处不好描述,
视频见:小迪安全
在数据包中增加垃圾数据,在数据包大小超过某一限制时,从而直接放行
在数据包文件名处更改**filename=”WebShell.php”**的形式为:
1 |
|
3、上传某些配置文件
a、上传Apache下的 .htaccess 文件
上传 .htaccess 实现让PHP解析WebShell.png为php文件等操作
.htaccess 的内容我就不放了,百度即可(其实我试了半天愣是不行 /_ \ )
b、.user.ini
上传 .user.ini 文件,其中配置
1 |
|
实现对此目录下的PHP文件,插入到正常PHP文件中并以PHP解析WebShell.png
4、其他方法
a、条件竞争
适用于先上传再判断合规与否的情况
一个 Intruder 负责发包,使文件上传,另一个 Intruder 负责访问,负责访问PHP代码,使其执行将WebShell写到目录中
1 |
|
b、常见中间件解析漏洞
Apache换行解析漏洞等,详见:PDF资料
c、文件包含漏洞
配合文件包含漏洞,解析图片马
【CTF笔记】文件上传漏洞
https://hel1um17.github.io/2025/02/07/2025-02-07/