当前位置: 首页 > news >正文

打靶日常-upload-labs(21关)

准备工作:选择低版本,高版本可能有问题

注意参数设置中这几个选项,如有其他问题,可以留言,博主看到会回复.

准备一个10乘10像素的照片,(尽量小一点),一个一句话木马,执行以下指令:

结果:

1.发现是一个前端验证:直接上传c.jpg,然后在bp里面改个包

用重放器把c.jpg改成c.php即可:

然后访问图片页面,再修改URL为c.php:看见下面页面就说明是成功了

因为我的一句话木马使用的是request,参数是x,所以get和post都可以测试:

get测试:

post测试:这里工具为hackbar

当然也可以蚁剑连接:

2.操作如上,屡试不爽

注意要自己会找图片的位置

3.黑名单

我们发现php为后缀已经让禁止了

可以随便修改一个php3

在找图片地址的时候,发现他在存的时候自动取名:

我们查第一回返回的包

然后成功

4.也是黑名单验证

没有禁用.htaccess文件

解释:.htacesss相对于一个apache的子配置文件,可以放在单独的目录下(路径下)去控制当个访问路径的行为。

漏洞前提:

<FilesMatch "c.jpg">
setHandler application/x-httpd-php
</FilesMatch> 

然后成功

5.做之前要切换版本

使用前提:1、要求php版本大于5.3,2、并且使用fastcgi模式(phpstudy里面nts代表fastcgi模式)3、上传目录下必须已经存在可以被执行的php文件

.user.ini,默认修改时间是5分钟生效

auto_prepend_file=d.jpg

d.jpg写一句话木马

6.啥也不用改,大小写绕过:window不区分大小写

7.虽然已经增加了大写-->小写转换,但是没有使用trim()去除空格,所以可以使用空格绕过黑名单

8.加.绕过

9.利用windows特性:文件流特殊字符:

::$DATA,如果文件名+::$DATA,windows会把这个文件当成文件流处理,不会检
测具体的后缀名。且保留::$DATA之前的文件名

10.deldot函数:从后往前检测,当检测到末尾的第一个点时会继续它的检测,但遇到空格就停止检测

码源:

所以我们用. .绕过

11strireplace会把检测到的黑名单列表里面的后缀名替换为空(只会替换一次,从前往后识别)

12.白名单验证,00截断


利用move_uploaded_file函数漏洞(C语言的特性:PHP执行引|擎底层就是C语言)
C语言的特性:遇到0x00会截断(十六进制的00代表结束符),URL编码:%00
前提:需要php版本小于5.3.4,magic_quotes_gpc关闭
在文件上传的时候添加%00

显示为404

修改URL即可

13.也是00截断,不过是post请求

把2b改为00

14.文件包含漏洞

15.方法同上

16.php扩展的php_exif要打开

过程同上

17.是对图片进行了两次编译:

后序更新第二种解法

18.白名单

条件竞争问题:
条件竞争:多个程序或者进程争取同一个资源。最后的结果取决于程序对资源操作的先后顺序
关键逻辑:在于判断文件类型到删除文件是需要一定时间的,如果此时有一个进程去访问上传的文件,可能导致访问文件
的进程和删除文件的进程造成了条件竞争。如果访问文件的进程抢在删除文件之前成功访问了。那么文件就已经被加载到
内存中执行了
可以用多线程发包,一边不停的上传文件,一边不停的去访问上传的文件路径

19.白名单

7z后缀没有在mime类型里面规定。利用apache未知文件解析漏洞
上传—个b.php.7zI

20.黑名单


move_uploaded_file: 会忽略文件末尾的 / .
可以把文件名后缀改为 Iphp/ .

拦截改这里即可

21.数组绕过


explode(a,b)函数以a为分割,把b转为数组。
reset()函数把数组内部指针移动到数组第一个元素,并返回值。
end()把数组内部指针移动到数组最后一个元素,并返回值。
count()函数数组元素的数量。
Sfile = explode(', strtolower($file);
把文件名通过点号进行分割为数组。

收官!!!

http://www.dtcms.com/a/324421.html

相关文章:

  • MyBatisPlus插件原理
  • Java 虚拟机运行时数据区组成详解
  • 【Vue2与Vue3的核心区别】响应式、运行时、编译器
  • 医学统计(随机对照研究分类变量结局数据的统计策略2)
  • 五种 IO 模型与阻塞 IO
  • Redis一站式指南二:主从模式高效解决分布式系统“单点问题”
  • 对话式BI有什么用?不懂技术也能用对话式BI搞定业务报表
  • 面对信号在时频平面打结,VNCMD分割算法深度解密
  • AMS1117-3.3 低压差线性稳压器 (LDO) 3.3V芯片 引脚图中文资料
  • 【Python 工具人快餐 · 第 4 份】
  • 【LLM】什么是Function Calling以及实现原理
  • Day41--动态规划--121. 买卖股票的最佳时机,122. 买卖股票的最佳时机 II,123. 买卖股票的最佳时机 III
  • 工业相机选择规则
  • 如何将PDF文档进行高效编辑处理!
  • Rust 实战四 | Traui2+Vue3+Rspack 开发桌面应用:通配符掩码计算器
  • Virtio 驱动初始化数据收发流程详解
  • 如何解决线上gc频繁的问题?
  • 《C语言》结构体和联合体练习题--2
  • Excel合并同步工具V1.0
  • 比特币现货和比特币合约的区别与联系
  • 数据结构——哈希表、树、gdb调试、时间复杂度
  • 【走进Docker的世界】Docker环境搭建
  • 自动驾驶控制算法——Stanley 控制器
  • 构建健壮的商品数据采集服务:处理京东 API 限流与错误
  • python洛谷做题27:P5724 【深基4.习5】求极差 / 最大跨度值 / 最大值和最小值的差
  • mcp-go v0.37.0 版本发布:重大变更与新特性解析
  • 利用容器编排完成haproxy和nginx负载均衡架构实施
  • GitLab 零基础入门指南:从安装到项目管理全流程
  • Elasticsearch QueryDSL 教程
  • 应对高并发 - TCP/IP网络栈核心参数调优