目录
upload-labs:pass04-pass12
-
pass04-htaccess绕过
查看源码发现,代码对文件后缀名进行了黑名单显示,但没有限制htaccess文件。
利用该规则上传htaccess文件,从而修改apache配置文件,使其能解析一种新的类型的文件,简单起见为abc,利用burpsuite抓包改包,将filename改为.htaccess
然后将后缀名为abc的木马文件上传即可通过文件过滤
-
pass05-大小写绕过
查看源码发现,相比pass04,还限制了htaccess,但未对后缀名进行转换大小写,因此考虑到大小写绕过
上传shell.PHP,发现木马上传成功
-
pass06-空格绕过
查看源码发现,pass06黑名单和pass05相同,但进行了后缀名大小写转换,但是未进行空格去除,于是考虑空格绕过,利用在windows中创建文件时会自动把后缀名末尾空格删去的特性
利用burpsuite改文件后缀名,加入空格,发现木马上传成功
利用burpsuite抓包改包,将文件后缀名末尾加点绕过,发现木马上传成功
-
pass08-::$DATA绕过
查看源码发现,未去除字符串**:: D A T A ∗ ∗ , 因 此 考 虑 ∗ ∗ : : DATA**,因此考虑**:: DATA∗∗,因此考虑∗∗::DATA过滤**。前述题目其实都可以通过:: D A T A 双 写 绕 过 , 即 通 过 b u r p s u i t e 将 后 缀 名 改 为 ∗ ∗ : : DATA双写绕过,即通过burpsuite将后缀名改为**:: DATA双写绕过,即通过burpsuite将后缀名改为∗∗::DA::$DATATA**或其他能通过的形式。
利用burpsuite抓包改包,发现木马上传成功
-
pass09-点+空格+点绕过
查看源码,既有点处理,也有空格处理,也有::$DATA处理,此时可以考虑多重绕过,注意此题与第三题不同,第三题是将img_path后拼接file_ext,而此题拼接的是file_name,故第三题用点+空格+点绕过行不通。即只有拼接的是filename的情况,点+空格+点才有可能将木马文件上传成功
当我们将后缀名末尾添加. .时,过滤规则首先将末尾点去除,再将后缀名中的空格去除,此时后缀名末尾依然剩余一个 .,因此可以绕过,用burpsuite抓包改包,上传成功
-
pass10-双写绕过
查看源码发现,此题通过将黑名单中的扩展名删除来达到过滤,因此可以考虑双写绕过
利用burpsuite将filename改为shell.pphphp,上传成功
-
pass11-白名单%00截断绕过
查看源码发现此题为白名单绕过,只支持jpg,png,gif格式的文件,且路径是由用户的get请求获取的,于是想到用%00截断符进行绕过,注意条件是:
- php版本小于5.3.4
- php的magic_quotes_gpc为OFF状态
利用burpsuite修改save_path和filename,发现上传成功
-
pass12-白名单-POST方法%00截断绕过
查看源码发现,此题和pass11区别是save_path的请求方法不同,此题为save_path,依然使用%00截断绕过,但注意由于是post方法,不能使用%00的url编码,而是需要将其解码为原始字符。%00是不可见字符,利用burpsuite可以实现解码
利用burpsuite改save_path,filename,上传成功