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

upload-labs关卡记录12

直接上传一句话木马,发现提示:

很明显这是一个白名单,而且不是前端的js检查,而是服务端的检查,因此我们使用bp抓包,改一下文件类型试试:

找到包之后,我们对content-type进行一个更改,改为png类型。然后放包试试:

发现依旧提示只允许上传这些类型的文件,可见我们这种绕过失败了。

于是就进行%00截断绕过,原理就是:%00是一个url编码,url发送到服务器后就被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容,即解码成了0x00。在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。

我们使用bp抓包,然后对url这里进行更改:

注意我们要先改shell.php为shell.png这样才能正确执行我们save_path里面的更改

然后放包:

我们看到,已经成功进行了绕过:

复制图像链接打开后就发现,会出现这样一堆东西,这个时候我们需要将%00也就是php后面的东西全部去掉即可:

$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext

这时源代码中关于上传图片保存路径的代码:

实际就是:../upload.  /随机数      时间戳  .文件后缀

我们使用了截断后:  upload/a.php%EF%BF%BD/xxxxxx.png

这里的%EF%BF%BD就是我们之前更改url传入的%00的编码

补充一下:这里使用这个%00截断的时候,php:php < 5.3.29且在php的配置中要设置:magic_quotes_gpc=off


http://www.kler.cn/a/459758.html

相关文章:

  • 钉钉h5微应用,鉴权提示dd.config错误说明,提示“jsapi ticket读取失败
  • 如何做好IT类的技术面试?
  • Android Room 框架的初步使用
  • Vue3最新Router带来哪些颠覆性变化?
  • 排序算法(系列)
  • 智慧农业物联网传感器:开启农业新时代
  • 史上最全 Git 图文教程(非常详细)零基础入门到精通,收藏这一篇就够了
  • 如何在CentOS 6上安装和配置Apache与PHP?
  • 高效学习资源网站汇总
  • Centos 7 二进制安装时序数据库TDengine_我和国产时序数据库的第一次亲密接触
  • 服务器主机测试网络
  • C# checked 和 unchecked 的使用
  • 安卓平台或者WEBGL平台编辑器内加载AB包紫色真机正常
  • 网页排名:PageRank 算法的前世今生
  • Android 模拟器系统镜像选择指南
  • 2024年API接口发展趋势:智能化、自动化引领电商数据流通
  • AndroidStudio之logcat使用技巧
  • PyTorch快速入门教程【小土堆】之土说卷积操作
  • MyBatis-Plus 中 @TableField 注解详解
  • JavaScript(五):JSON