Upload-Labs渗透笔记
靶机项目地址:https://github.com/c0ny1/upload-labs
1|0来源:https://www.cnblogs.com/joker-vip/p/12650240.html
2|0Pass-01
1.直接上传php一句话,报错
2.信息回显速度很快,猜想是前端验证,可以在修改前端代码,删掉checkFile()函数,或者上传jpg后缀通过burp抓包修改php后缀绕过前端验证
3.上传成功
4.菜刀连接成功
5.分析源码
Javascript前端语言定义函数,仅在前端判断文件的后缀。
3|0Pass-02
1.直接上传,发现提示文件类型不正确
2.抓包修改文件类型,改成image/jpeg
3.改成image/jpeg
4.发包,上传成功
5.菜刀连接成功
6.分析源码
仅这条if语句判断了上传文件的类型,修改Content-Type即可绕过。
4|0Pass-03
1.直接上传,提示
2.猜想可能是黑名单限制,利用其它后缀名进行绕过php3、phtml
3.上传成功,菜刀连接成功
4.分析源码
建立了个黑名单,其中的后缀都不能上传。但是其它可解析php的后缀可以上传并解析。
5|0Pass-04
1.直接上传,提示
2.尝试利用apache解析漏洞,apache读取后缀从右向左,若遇见不认识的后缀名便向前继续读取,直到认识的后缀。
3.上传成功,连接菜刀成功
4.方法二,其实这关考察的目的是 .htaccess文件,上传一个.htaccess内容如下的文件:
SetHandler application/x-httpd-php
5.这样所有文件都会解析为php,然后再上传图片马,就可以解析:
6.连接菜刀成功
7.分析源码
这里把所有的后缀都过滤了,除了.htaccess,所以可以利用上传.htaccess规则来进行绕过,把可以上传的文件后缀解析成php。
6|0Pass-05
1.直接上传,提示
2.上传.htaccess失败,可能也把.htaccess给过滤了,尝试使用apache解析漏洞绕过
3.连接菜刀成功
4.其实这题考察的是大小写绕过,
5.分析源码
在上一题pass-04的基础上多了个过滤.htaccess,但是没有对后缀的大小写进行统一,这里于是可以通过大小写绕过。
7|0Pass-06
1.直接上传失败,加空格绕过
2.上传成功
3.菜刀连接成功
4.源码分析
还是黑名单,但是没有对后缀名进行去空处理,可在后缀名中加空绕过。
8|0Pass-07
1.尝试利用windows特性,会自动去掉后缀名中最后的 . ,抓包,在后缀加 .
2.上传成功
3.连接菜刀成功
4.分析源码
同样是黑名单,但是没有对后缀名进行去 . 处理,利用windows特性,会自动去掉后缀名中最后的 . ,可在后缀名中加 . 绕过。
9|0Pass-08
1.尝试使用 ::$DATA 加在后缀之后进行绕过
2.上传成功
3.连接菜刀成功
4.分析源码
php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名,目的就是不检查后缀名。
10|0Pass-09
1.通过尝试构造,加上点空格点绕过
2.上传成功
3.连接菜刀成功
4.分析源码
还是黑名单过滤,并删掉了文件名末尾的点,路径拼接的是处理后的文件名,通过构造 点+空格+点 绕过过滤。
11|0Pass-10
1.直接上传发现把后缀php替换为空
2.这样可以使用双写绕过
3.上传成功
4.连接菜刀成功
5.分析源码
设置黑名单,把有问题的后缀名都替换为空,但是可以利用双写绕过。
12|0Pass-11
1.直接上传,提示
2.应该是用到了白名单,抓包查看,尝试使用%00截断进行绕过
3.上传成功
4.菜刀连接成功
5.分析源码
白名单机制,但是$img_path直接拼接,因此可以利用%00截断绕过。
13|0Pass-12
1.上传抓包查看,可以使用00截断,php后空格十六进制的20改为00
2.上传成功
3.菜刀连接成功
4.源码分析
同样是白名单,这次的save_path是通过post传进来的,还是利用00截断,但这次需要在二进制中进行修改,因为post不会像get对%00进行自动解码
14|0Pass-13
1.制作图片马,copy 1.jpg /b + shell.php /a webshell.jpg
2.上传图片马
3.上传成功
4.分析源码
通过读文件的前2个字节判断文件类型,因此直接上传图片马即可。也可以在一句话文件内容前面加图片的标识例如GIF89a。
15|0Pass-14
1.同样直接上传图片马
2.上传成功
3.分析源码
这里使用getimagesize函数获取文件类型,还是直接就可以利用图片马就可进行绕过。也可以在一句话文件前加图片标识码例如GIF89a。
16|0Pass-15
1.同样可以使用图片马上传
2.上传成功
3.源码分析
这里是用php_exif模块来判断文件类型,还是直接就可以利用图片马就可进行绕过。
17|0Pass-16
1.直接上传图片马
2.成功上传
3.分析源码
综合判断了后缀名、content-type,以及利用imagecreatefrompng
判断是否为png图片,最后再做了一次二次渲染。
18|0Pass-17
1.提示代码审计,所以先分析下源码
这里先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此我们可以上传1.php只需要在它删除之前访问即可,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可。
2.抓包转到intruder模块,进行不断上传
3.在不断上传的中,不停刷新浏览器地址,即可访问到文件内容
19|0Pass-18
1.通过代码审计,这个对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功
2.通过条件竞争,图片马来不及改名就上传了
3.用文件包含查看文件
20|0Pass-19
1.源码审计,发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过
2.上传成功
3.文件执行成功
21|0Pass-20
1.代码审计
2.通过上传一个php文件,改包
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/12741534.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】