文件上传刷题
文件上传
Web151
(前端验证)

在前端会有一些对后缀的过滤,前端过滤就进HTML检查元素把里面的限制语句直接删掉或者改成要上传的后缀名就能上传了,最简单方法就抓包改后缀就行了
上传一个小马就能rce
Web152
(后端验证)


更改content-type在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。
抓包后修改content-type 再发包就能绕过后端过滤

Web153
ini文件包含绕过

upload文件夹能够直接访问,说明有index.php文件,所以能够用.user.ini.user.ini漏洞
.user.ini中两个中的配置就是auto_prepend_file和auto_append_file。这两个配置的意思就是:我们指定一个文件(如1.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),相当于在index.php中插入一句:require(./1.jpg)。这两个设置的区别只是在于auto_prepend_file是在文件前插入,auto_append_file在文件最后插入。
利用.user.ini的前提是服务器开启了CGI或者FastCGI,并且上传文件的存储路径下有index.php可执行文件。


这样index.php就包含了1.txt的马然后rce

也可以用日志文件包含做
Web154

过滤了”php”内容 php语言对函数名、方法名、类名大小写不敏感 使用大写 或者短标签
1<?=eval($_POST[1]);?> <?PHP eval($_POST[1]);?>
没限制就继续用.user.ini漏洞写入包含文件
Web155
同上
web156
过滤了[],用{}代替即可:
1<?=eval($_POST{cmd});?>
web157
多过滤了分号,改一下即可:
1<?=include"/var/lo"."g/nginx/access.lo"."g"?>
web158
同上
web159
同上
web160
本题多过滤了括号和反引号,而且还过滤了log,日志包含也能做,用字符串拼接(php中用.来连接字符串)构造log:
1 | |
这种小马在<?被过滤时用

然后上传.user.ini包含该文件即可:auto_append_file=/var/www/html/upload/hack.png
然后在UA头改为想执行的命令访问主页,最后访问/upload,看看log里命令执行结果即可即可
