upload-labs通关记录

upload-labs

源码地址upload-labs(github)

PASS-1 JS检查

直接BurpSuite抓包改包将上传的图片后缀由图片jpg、png等改为php脚本,然后上传即可

PASS-2 修改Content-Type

看源码,只判断Content-Type类型,直接上传php,然后抓包改包,修改Content-Type为image/jpeg或者image/png或者image/gif

PASS-3 黑名单绕过

看源码,发现禁止上传php文件,但不限制php5、phtml等文件。

(!!!前提:apache的conf下的http.conf文件中要有如下语句:

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

每个人的语句不一样,有除了php以外的一个就OK)

修改后缀上传即可

PASS-4 htaccess文件

看源码。发现基本限制了所有的后缀名,但有一个例外 .htaccess

(!!!前提:1.mod_rewrite模块开启 2.AllowOverride All)

上传一个.htaccess的文件,
内容:Sethandler application/x-httped-php
该文件会上传文件全部会作为php文件进行解析

PASS-5 大写

看源码,发现又禁用了.htaccess文件,但是对比PASS-4发现没有转化为小写的源码,所以可以用大写进行绕过,所以上传php,再抓包改为PHP文件,上传即可。

PASS-6 首尾去空

看源码。发现源码没有进行首尾去空,所以上传php文件,抓包后,在后缀名后加入空格,上传即可。

PASS-7 文件名末尾的点

看源码。没有删除文件名末尾的点,所以上传php文件,抓包在文件后缀名之后加入一个点,上传即可。

PASS-8 字符串::$DATA

看源码。发现源码中没有判断删除 :: $DATA(文件名+:: $DATA会将:: $DATA之后的数据作为文件流处理,不会检测文件后缀名,且保持:: $DATA之前的文件名不变)。所以上传php,在后缀名后加入:: $DATA,然后上传即可。

PASS-9 . .绕过

看源码。限制了文件类型,并且,先文件首尾删掉所有空格,然后删除文件名末尾的最后一个点(从右数第一个 . ),再利用strchar函数通过查找 . 进一步确认文件后缀。由于限制,所以再加一个 **.**来绕过 。综上,抓包后添加点+空格+点,绕过后上传即可。

PASS-10 pphphp双写绕过

$ file_name = str_ireplace($deny_ext,"", $file_name);
用空格来替换file_name的后缀名,且只替换一次,所以双写绕过。
pphphp中先识别到一个php,然后替换,留下的依旧是php
{ (=_=)(写到这,我也有点懵)}

PASS-11 00截断

$ img_path = $ _GET[‘save_path’]."/".rand(10, 99).date(“YmdHis”).".".$ file_ext;

抓包修改save_path= /upload/1.php%00
上传。
!!!:截断条件:php版本低于5.3.4,magic_quotes_gpc为off

PASS-12 00截断

$ img_path = $ _POST[‘save_path’]."/".rand(10, 99).date(“YmdHis”).".".$ file_ext;

抓包,save_path通过post方式传递,因为post不会像get对%00自动解码,所以在Hex中进行修改(在hex界面,找到"save_path"./upload/1.php对应的hex码,在后面添加00)

你可能感兴趣的:(笔记,upload)