Venus–HMVLabs–HackMyVM–Writeup
1、hacker


2、sophia



3、angela


4、emma

当使用 cat - 时,通常是用来从标准输入读取内容并将其输出到标准输出
在脚本中,可以使用 cat - 处理来自标准输入的内容,如:
1 | #!/bin/bash |
这个脚本会先要求用户输入名字,然后通过 cat - 等待用户进一步输入,并将其内容直接输出。
所以这里直接使用
1 | cat ./- |

5、mia

这里使用
1 | find / -name hereiam -type d 2>/dev/null |
-type d: 限制搜索结果只包括文件夹。-type f为限制搜索结果只包括文件
2>/dev/null: 将标准错误(stderr)重定向到 /dev/null,这样可以隐藏搜索过程中可能出现的错误信息。这可以防止由于权限不足或其他原因导致的错误消息在终端上显示出来。


6、camila

这个muack文件夹里面有好多子目录,其中一个文件里面有密码。
1 | find muack/ -type f -exec cat {} \; |
find muack/: 在muack/目录下进行查找操作。muack/是指定的起始目录。-type f: 限制查找结果为普通文件(不包括目录或其他类型的文件)。-exec cat {} \;: 对于每一个找到的文件,执行cat {}命令。{}表示find命令找到的文件路径,\;表示-exec参数的结束。
综合起来,这条命令的具体步骤是:
- 在
muack/目录下递归地查找所有普通文件。 - 对于每一个找到的文件,使用
cat命令显示其内容。
7、luna

1 | find / -size 6969c -type f 2>/dev/null |
查找6969字节大小的文件(c:字节,w:双字,k:KB,M:MB,G:GB)

8、eleanor

查找属于用户violin的文件
1 | find / -user violin -type f 2>/dev/null |
9、victoria

这里因为权限问题不能解压到本文件夹中,可以解压到/tmp文件夹中
1 | unzip passw0rd.zip -d /tmp #-d为指定绝对路径 |
10、isla

1 | cat passy |grep 'a9HFX' |
11、violet

1 | grep '0JuAZ$' passy #$ 表示行的结尾 |
12、lucy

上面两个合在一起
1 | grep '^fu.*ck$' file.yo |
13、elena

查看环境变量
1 | printenv |
14、alice

找到passwd文件,在/etc/passwd中,打开文件找到alice行的注释即可
或者
1 | cat /etc/passwd | grep 'alice' |
15、anna

列出目前的sudo权限
1 | sudo -l |
我们看到它直接给了我们用户 natalia 的用户 shell。
1 | sudo -u natalia bash #此处为获取natalia的权限,sudo -u指定用户执行命令,例sudo -u user ls -a |
16、natalia

base64解密
1 | base64 -d 'base64.txt' |
17、eva

对于此任务,我使用了find命令。在 find 命令中,有一个选项mtime,允许我们根据修改的时间(默认为天数)扫描文件。因此,如果 n 是天数,我们可以找到在 n 天之前、n 天之后或 n 天前修改的文件。例如,2024 年和 1970 年的天数之差为(2024-1970)*365= 19710 天。因此,通过使用-mtime -19710,我可以列出比 1970 更新的文件。但是,-mtime +19710将给出 1970 年之前的修改的结果。
1 | find / -type f -mtime +19710 2>/dev/null |
18 、clara

这里的rockyou.txt为密码爆破字典,可以在github上下载
需要我们爆破压缩包密码,先将文件拉到本地计算机
1 | scp -P 5000 clara@venus.../images.eu:~/protected.zip . |
19、frida

文件中有重复行即为密码,但是注意未排序,所以先对文件中字符串排序sort再去进行查重 uniq
注意uniq只会对相邻行重复进行查重
1 | sort repeated.txt | uniq -d repeated.txt |
20、eliza

目录中有一个隐藏文件,是iris的ssh私钥
1 | ssh iris@localhost -i .iris_key |
21、iris

查看eloise文件,发现是图片的base64格式,复制下来直接用在线base64转图片即可
22、eloise

打开hi文件会发现是十六进制格式,转换ascii码即可
或者用
1 | xxd -r hi |
23、lucia

字典文件中有彩蛋flag 0xC
暴力破解/etc/xdg中的文件名
1 | while IFS= read -r line; do readlink -e /etc/xdg/$line ; done < dict.txt |
while IFS= read -r line; do ... ; done < dict.txt:while ...; do ... ; done: 这是一个 Bash 的循环结构,while后面的条件会一直循环执行,直到条件不满足为止。IFS= read -r line:IFS=确保 Bash 不会从输入中去除空格和制表符,read -r line用于读取dict.txt文件的每一行,并将其赋值给变量line。< dict.txt: 将dict.txt文件作为输入流传递给循环。
readlink -e /etc/xdg/$line:readlink -e: 这个命令会打印符号链接的绝对路径。如果/etc/xdg/$line是一个符号链接,则会打印出其解析后的绝对路径。/etc/xdg/$line: 这是一个路径,其中$line是从dict.txt中读取的每一行的值。这个路径假设了/etc/xdg/目录下有以dict.txt中每行内容命名的文件或目录。
24、isabel

找无重复行,还是先排序
1 | sort different.txt |uniq -u |
25、freya

写一个bash脚本循环读取/free文件夹下生成的文件
1 | false; while [ $? -ne 0 ]; do cat /free/* ; done 2>/dev/null |
- **
false;**:false是一个命令,它总是返回非零的退出状态(即返回 1),表示命令执行失败。这里使用false;是为了始终进入循环的第一次迭代。
- **
while [ $? -ne 0 ]; do ... ; done**:while [ $? -ne 0 ]; do ... ; done是一个while循环,其条件是命令的退出状态不等于零时执行。$?是上一个命令的退出状态。
26、alexa

在本地发一个http请求
1 | curl http://localhost |
27、ariel

有一个临时文件,可以用vim -r去回复
1 | vim -r .goas.swp |
可以写个脚本去爆破密码
–>VVjqJGRrnfKmcgD–>bnQgcXYamhSDSff–>QsymOOVbzSaKmRm–>cbjYGSvqAsqIvdg–>LkWReDaaLCMDlLf–>DabEJLmAbOQxEnD–>mYhQVLDKdJrsIwG–>d3LieOzRGX5wud6–>EKvJoTBYlwtwFmv–>PEOppdOkSqJZweH–>rSkPlPhymYcerMJ–>GBUguuSpXVjpxLc–>NdnszvjulNellbK–>IaOpTdAuhSjGZnu–>RGBEMbZHZRgXZnu–rxhKeFKveeKqpwp–>cOXlRYXtJWnVQEG–>ppkJjqYvSCIyAhKThats
