首页 > 其他分享 >upload-labs挑战笔记

upload-labs挑战笔记

时间:2024-04-29 16:11:06浏览次数:17  
标签:文件 后缀 upload 笔记 labs Pass 绕过 php 上传

Pass-01

直接上传php木马,发现前端报错
image.png
关掉JS,再次进行上传
image.png
右键获取地址
image.png
获取shell
image.png

Pass-02

在服务器端对数据包的MIME进行检查,只让Content-Type为image/jpeg | image/png | image/gif的文件通过。由此可知,它只对Content-Type做了判断,并没有对文件进行判断,因此我们可以上传.php文件,将Content-Type改为image/png。
image.png

Pass-03

黑名单绕过,上传php后缀文件会被拦截,但默认状态下php3、php4、php5、phtml后缀文件都会被解析为php,所以我们上传phtml后缀文件进行绕过
前提是apache的httpd.conf中有如下配置代码

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

image.png

Pass-04

上传.htaccess,修改站点的超文件解析。内容为AddType application/x-httpd-php .jpg,这个指令代表着.jpg文件会被当做php来解析
构造.htaccess,实现重写文件解析,同样这样的前提也是得在配置文件里面有这样的一句话

AllowOverride All
LoadModule rewrite_module modules/mod_rewrite.so

image.png

Pass-05

后缀大小写绕过,上传.PHp后缀文件
image.png

Pass-06

文件后缀空格绕过,通过burp抓包修改数据包
image.png
image.png

Pass-07

还是黑名单,但是没有对后缀名进行去.处理,利用windows特性,会自动去掉后缀名中最后的.,可在后缀名中加.绕过
image.png

Pass-08

Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析
::$DATA(Windows文件流绕过),上传php文件,把文件名后缀改.php::$DATA
image.png

Pass-09

构造复杂后缀名来绕过
image.png

Pass-10

双写文件名后缀绕过
image.png

Pass-11

0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。
上传文件保存路径可以控制,使用%00截断字符串来控制文件名

截断条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态

image.png

Pass-12

和十一关不同的是这次的save_path是通过POST传进来的,还是利用00截断,但这次需要在二进制中进行修改,因为POST不会像GET对%00进行自动解码
image.png
因为程序中检测的是文件的后缀名,如果后缀合法则拼接路径和文件名。那么,攻击者修改了path以后的拼接结为:upload/shell.php%00/shell.jpg,移动文件的时候会将文件保存为:upload/shell.php,从而达到Getshell效果。

Pass-13

图片马绕过
image.png
将图片上传,直接访问图片并不能把图片当做PHP解析,因此还需要利用文件包含漏洞
image.png

Pass-14

同上

Pass-15

同上

Pass-16

这里进行了二次渲染,不过二次渲染会保留一些文件内容不会改变,所以在制作图片马之前,我们先观察二次渲染前后图片不会改变的地方,将其代码写入其中即可绕过二次渲染
image.png
最后,进行二次渲染的时候最好用gif文件,因为gif文件在渲染前后有大部分的没有变化,容易找到前后没有变化的部分,png的二次渲染的绕过并不能像gif那样简单

Pass-17

$temp_file = $_FILES['upload_file']['tmp_name'];//存储在服务器的文件的临时副本的名称

当我们上传webshell文件时,不会先限制php类型文件上传,先利用上面的语句把上传的文件临时存放。再执行下面的if语句进行文件类型的限制和文件名的时间戳。然后执行if(move_uploaded_file($temp_file, $upload_file))//移动到新文件夹
绕过思路是利用代码执行过程有耗费时间的过程,临时webshell文件保存的极短时间,去访问webshell,获取一些信息

Pass-18

本关对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞,可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功

Pass-19

存在00截断,上传图片马,通过保存的文件名做00截断

Pass-20

数组绕过

标签:文件,后缀,upload,笔记,labs,Pass,绕过,php,上传
From: https://www.cnblogs.com/NoCirc1e/p/18165980

相关文章

  • Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能
    前言上次说了利用AOP思想实现了审计日志功能,不过有同学反馈还是无法实现完全无侵入,于是我又重构了一版新的。回顾一下:Asp-Net-Core开发笔记:实现动态审计日志功能现在已经可以实现对业务代码完全无侵入的审计日志了,在需要审计的接口上加上[AuditLog]特性,就可以记录这个接口......
  • Binomial Sum 学习笔记
    BinomialSum如果我们有一个微分有限函数\(F(z)\),还有另外一个生成函数\(G(z)\),一个数列\(a\),如果我们能对\(k\in[0,n]\)的每一个\(k\)快速求出\(G^k(z)\)的前\(n\)项系数带权和,即\[b_k=\sum_{i=0}^na_i[z^i]G^k(z)\]那么我们可以在\(\Theta(n)\)的时间复杂度内......
  • 23种设计模式笔记-创建型模式
    23种设计模式-创建型模式笔记模板模式前提-模式:概念:规则:实现细节:应用场景:示意图:代码实现:创建型模式单例、工厂方法、抽象工厂、生成器、原型。单例模式-共享独占资源概念:创建型设计模式,保证一个类只有一个实例,提供全局访问点来对单个实例进行访问规则:......
  • 学习笔记3
    set建立变量set/pa=(将由用户输入)if'%a%=='1'(条件判断)goto1:1shutdown-s-f-t%a%1.批处理第二节copy....文件2.针对2003或者xpntsd-cq-pnwinlogon.exe强制杀死系统登入进程taskkill/imexplorer.ext/f杀死桌面桌面就没了startc;/window/exep......
  • 前缀和的一些笔记
    左神课程笔记,前缀和笔记,(前缀和也是想双指针一样管理两个指针之间的区间的)前缀和(前i个数的和)个人理解,把前缀和当成两个指针,维护一个区间,例如i-1到i这两个双指针之间管理的线段上放着一个a[i-1],感觉差分也能这样理解,a[i-1]-a[i]之间放着一个差分值下标i结......
  • c#学习笔记
    程序程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件。程序集只是逻辑上的划分 【公共语言运行库CLR】加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局 一个程序运行......
  • 《期货-市场技术分析》读书笔记
    第二本技术分析书籍,《期货-市场分析技术》:书中的很多内容,如趋势、趋势线、阻力、支撑等,也象《日本蜡烛图》一样,没有逻辑推理过程,没有数据验证。但是我认可其确实有一定的心理暗示作用。因为我在听很多技术分析大V的视频时,他们中的大部分人,确实也都是这么分析的。如果大多数市......
  • 一些sql笔记(sql sever)
    记录一些平日写sql的笔记insert语句INSERTINTO`table_name`(`column1`,`column2`,...)VALUES(`value1`,`value2`,...);update语句UPDATE`table_name`SET`column1`=`value1`,`column2`=`value2`,...WHERE`condition`;delete语句DELETEFROM......
  • 学习笔记-平衡树
    学习笔记-平衡树treap#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;#definelst[x].ch[0]#definerst[x].ch[1]constintN=114514;constintinf=2147483647;intcnt=0,root;mt19937rnd(0x7f);structtreap{ intch[2],cnt,size,val,......
  • DSP学习笔记
    DSP学习笔记之EPWMEPWM模块介绍F28335最多有18路PWM输出,其中有6个ePWM模块由两路ePWM输出组成,分为ePWMxA和ePWMxB,这一对PWM输出,可以配置成两路独立的单边沿PWM输出,或者两路独立的但互相相对称的双边沿PWM输出,或者一对双边沿非对称的PWM输出,因为每对PWM模块中的两个PWM......