0%

Upload-labs-master闯关日志

首先先进行环境配置:
我这里用的是phpstudy 2018

Pass 1

ok,首先我们来到第一关,我们先尝试直接传入一句话木马 

很显然啊,他这里对上传的文件进行了特殊的要求,因此我们先来看一下他的源代码,看看能不能从源代码入手(F12)

很幸运啊,我们找到了源代码中的判断语句

οnsubmit=”return false;” 将无论何时都阻止表单的提交
οnsubmit=”return check();” 是否提交表单取决于check()的返回值
οnsubmit=”check();” check()的返回值无影响,无论返回什么值都会提交表单

接下来我们只需要对源代码进行更改便可以成功上传(删除判断,加上上传路径)

当然,第一关也可以通过修改元素var allow_ext = “.jpg|.png|.gif”;,这里可以看到此关定义了上传文件类型,我们可以通过控制台添加上传文件类型var allow_ext = “.jpg|.png|.gif|.php”; 即可。
第一关成功拿下

Pass 2

第二关这里需要利用一个工具Burp Suite

我们先配置一下代理环境


将一句话木马的格式改成图片格式上传,用burp suite进行拦截,发送到Repeater,查看内容,将jpg,改回php,点击go。



当然,第二关也可以通过 直接上传php文件进行拦截,将(Content-Type: application/octet-stream)进行修改

Content-Type: image/jpeg
Content-Type: image/png
Content-Type: image/gif

ok,第二关也就顺利拿下了

Pass 3

第三关的跟第二关相似,也需要利用到Burp Suite进行修改,但需要进行隐蔽。

具体步骤如上:

这里是需要双写::$data进行越过(服务器对::$DATA进行了防范)

*php在windows的时候如果文件名+”::$DATA”会把其之后的数据当成文件流处理,不会检测后缀名。(重点:只能是Windows系统,并且只能是php文件)

*上传名字也会有所改变,可以从Response中找到

好了,第三关我们也成功通过。

Pass 4

跟之前的方法一样,先打开Burp Suite拦截,在上传区传入一句话代码,将拦截代码发送到Repeater,点击Hex,找到filename=”–.php”,在p(70)与“(22)之间加入81-99任意一个数字

*由于windows系统对于文件名的限制,当0x81~0x99放在文件名结尾时,不符合操作系统命名规范,字符会被自动去掉,文件名结尾的空格和点号也是同理。我们可以利用这点来成功混过安全检查。

第四关也就成功拿下了。

Pass 5

第五关可以用::$data,改16进制后缀绕过等方法,这里就不再演示了,不会的可以参考前面的方法。

Pass 6

ok,我们直接来到第六关,先拦截,后发送。我们可以通过更改后缀的大小写,以此来达到绕过检查的目的。

*此方法适用于windows系统,且linux系统默认对大小写敏感,非特殊配置,不可使用。

当然,也可以使用修改16进制后缀,双写::$data进行绕过。

Pass 7

接下来来到了第七关,第七关跟前面几关也是十分的类似啊,这关可以通过在php后面添加空格以此来越过检查,具体如下:

Pass 8

下面几关的方法雷同,就不具体图片演示了``````

在PHP后面加.

16进制转换

*Windows下xx.jpg[空格] 或者xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认去除空格或点

Pass 9

第九关这里是运用到了白名单绕过和.空格绕过

*利用条件:
php在windows的时候如果文件名+”::$DATA”会把其之后的数据当成文件流处理,不会检测后缀名。 且保持”:: $DATA”之前的文件名,他的目的就是让服务器不检查后缀
例如:”1.php::$DATA”Windows会自动去掉末尾的::$DATA变成”1.php”
重点:
只能是Windows系统,并且只能是php文件

Pass 10

ok,我们来到第十关,第十关这里用到的是一种通杀的方法“点+空格+点绕过”,简称.空格.

也可以利用16进制后缀转换绕过。

Pass 11

我们来到本期的最后一关啊,方法也是十分的简单,通过文件名类型双写完成(传输php文件,服务器会删除后缀,所以进行双写绕过)


【pass01-pass11总结】

空格
::$DATA
十六进制
点+空格+点绕过(windows特性)
爆破文件后缀