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

打靶日常-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.xdnf.cn/news/17582.html

相关文章:

  • 【密码学】8. 密码协议
  • Android 开发问题:Invalid id; ID definitions must be of the form @+id/ name
  • 【系统分析师】软件需求工程——第11章学习笔记(上)
  • A#语言详解
  • GitHub上为什么采用Gradle编译要多于Maven
  • 【走进Docker的世界】深入理解Docker网络:从模式选择到实战配置
  • AI质检数据准备利器:基于Qt/QML 5.14的图像批量裁剪工具开发实战
  • 【代码随想录day 15】 力扣 404. 左叶子之和
  • nginx+Lua环境集成、nginx+Lua应用
  • 自动化备份全网服务器数据平台
  • UE材质World Position 和 Object Position
  • Linux操作系统从入门到实战(十七)进程与进程基本概念
  • Redis一站式指南一:从MySQL事务到Redis持久化及事务实现
  • Error: error:0308010C:digital envelope routines::unsupported at new Hash
  • 计算机视觉(CV)——pytorch张量基本使用
  • 青龙峡拔韭菜
  • 【东枫科技】NTN-IOT 卫星互联网原型系统,高达1.6G大带宽
  • 免费数字人API开发方案
  • 使用正则表达式检测Base64字符串并提取图片类型及正文的JavaScript函数,代码精简且高效
  • How Websites Work 网站如何运作
  • Linux入门指南:26个基础命令全解析
  • C语言(长期更新)第10讲:操作符详解(二)
  • vue3项目中在一个组件中点击了该组件中的一个按钮,那么如何去触发另一个组件中的事件?
  • playwright-mcp 项目全解析:从理论到实践
  • 量子计算机实用化:从理论到现实的艰难跨越
  • (一)Tailwindcss
  • Win10清理C盘步骤
  • Spring事务失效的常见原因
  • ROS2 QT 多线程功能包设计
  • 基于PyTorch一文讲清楚损失函数与激活函数并配上详细的图文讲解