2020年1月15日
任务
- 通关Bandit wargame,做到26-27关
题目网址为:https://overthewire.org/wargames/bandit/
要求:写出清晰明确的解题过程,阐明解题思路;在第二天的汇报中能够动手实操并讲解 - 写一份命令速记表,分类整理Linux各种常用命令,给出常用使用方法
- 装一台属于自己的Linux,发行版任选(明晚前搞定)
- 通关Bandit wargame,做到26-27关
题目网址为:https://overthewire.org/wargames/bandit/
要求:写出清晰明确的解题过程,阐明解题思路;在第二天的汇报中能够动手实操并讲解
-
0-1级
- 使用ssh -p 2220 bandit0@bandit.labs.overthewire.org
登陆靶机使用ls查看下,发现目标文件。在使用ls -all 查看下。最后在cat一下目标文件,得到密码boJ9jbbUNNfktd78OOpsqOltutMc3MY1。
- 使用ssh -p 2220 bandit0@bandit.labs.overthewire.org
-
1-2级
- 使用上面的密码登陆。ls一下,发现一个目标-,但是直接cat打不开,使用pwd查看一下当前目录。在cat这个目录下的-。得到密码
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
- 使用上面的密码登陆。ls一下,发现一个目标-,但是直接cat打不开,使用pwd查看一下当前目录。在cat这个目录下的-。得到密码
-
2-3级
- 使用上面的密码登陆。ls一下,发现一个目标空格文件,这需要Tab按键补齐,自动将空格转义,或者给文件名加上双引号。得到密码
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
- 使用上面的密码登陆。ls一下,发现一个目标空格文件,这需要Tab按键补齐,自动将空格转义,或者给文件名加上双引号。得到密码
-
3-4级
- 使用上面的密码登陆。ls一下。得到一个目录,题目说是在以一个目录下的隐藏文件,所以进入到这个目录下,使用ls -a得到隐藏文件,cat一下得到密码pIwrPrtPN36QITSp3EQaw936yaFoFgAB
-
4-5级
- 使用上面的密码登陆。ls一下。得到一堆file。题目说唯一的人类可读文件中,所以使用file ./*查看文件类型,发现07可读。cat得到密码koReBOKuIDDepwhWk7jZC0RTdopnAYKh
-
5-6级
- 使用上面的密码登陆。ls一下。得到一堆文件,根据题目提示,需要使用find . -type f -size 1033c去查找,得到一个目录下存在文件
,cat下得到密码DXjZPULLxYr17uwoI01bNLQbtFemEgo7
附一下find参数解析
- -size n[cwbkMG] : 档案大小 为 n 个由后缀决定的数据块。其中后缀含义为:
- b: 代表 512 位元组的区块(如果用户没有指定后缀,则默认为 b)
- c: 表示字节数
- k: 表示 kilo bytes (1024字节)
- w: 字 (2字节)
- M:兆字节(1048576字节)
- G: 千兆字节 (1073741824字节)
- -type c : 档案类型是 c 。
- d: 目录
- c: 字型装置档案
- b: 区块装置档案
- p: 具名贮列
- f: 一般档案
- l: 符号连结
- s: socket
- 使用上面的密码登陆。ls一下。得到一堆文件,根据题目提示,需要使用find . -type f -size 1033c去查找,得到一个目录下存在文件
-
6-7级
- 根据题意只能用find查找
find / -size 33c -users bandit7 -group bandit6 2>/dev/null 后面的2>/dev/null因为find命令在根目录下查找会经常有很多权限的报错信息,所有在linux中通常用这种方式将错误信息重定向到“黑洞中”。查到到文件后。cat一下得到密码HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
- 根据题意只能用find查找
-
7-8级
- 根据提示data.txt中在密钥在millionth中,可以通过grep命令查看使用cat data.txt |grep millionth得到密码cvX2JJa4CFALtqS87jk27qwqGhBM9plV
-
8-9级
- 这题是要找到出现一次的那个行,肯定用uniq命令了,但是使用之前需要用sort命令对文本进行排序,因为uniq命令是通过判断上下两行是否一样来判断的,所以用sort排序一下然后在uniq就能找到唯一出现的那一行了
这题找到两种解法,一个是直接-u获取,还有就是-c列出出现的次数,然后从中找到是1的那一行即可 - sort data.txt |uniq -u
- sort data.txt |uniq -c
两种都得到密码为UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
- 这题是要找到出现一次的那个行,肯定用uniq命令了,但是使用之前需要用sort命令对文本进行排序,因为uniq命令是通过判断上下两行是否一样来判断的,所以用sort排序一下然后在uniq就能找到唯一出现的那一行了
-
9-10级
- 直接使用cat命令是很多很杂乱的东西,可以通过string命令查看文件中的字符串,根据提示信息可得下一关密钥以若干个“=”开头,可以找到下一关的密码 使用strings data.txt
truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
- 直接使用cat命令是很多很杂乱的东西,可以通过string命令查看文件中的字符串,根据提示信息可得下一关密钥以若干个“=”开头,可以找到下一关的密码 使用strings data.txt
-
10-11级
- 题目提示密钥信息用了base64解码,我们解码即可 使用base64 -d data.txt 得到IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
-
11-12级
- tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:
tr -c -d -s [“string1_to_translate_from”][“string2_to_translate_to”] < input-file
Rot13是一种特殊的凯撒密码转换,根据题目所说的字母的的顺序旋转了13个位置,就相当去26个字母的前13个位置与后13个位置调换了。那么就是用tr命令进行调换 使用cat data.txt |tr 'a-zA-Z' 'n-za-mN-ZA-M'
得到密码5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
- tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
-
12-13级
- 先mkdir /tmp/c1911创建一个目录。在cp data.txt /tmp/c1911复制进来,在xxd -r data.txt > data.bin转成bin。复制完是gzip格式,改文件名,解压,mv data.bin data.gz,gzip -d data.gz,解压完后还有一层bzip2 ???, 继续解压。然后一直解压,直到第八层,得到密码8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
-
13-14级
- 这一关告诉下一关的密码存放在/etc目录下,且只有bandit14用户可读,当前目录下只有一个私钥文件,可以考虑用私钥文件去连接bandit14, 用bandit14 读取用户文件。使用ssh -i sshkey.private bandit14@127.0.0.1连接,然后在cat /etc/bandit_pass/bandit14得到密码4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
-
14-15级
这关说只要把本关的密钥提交即可得到反馈,使用telnet localhost 30000,再提交上面的密码,得到密码BfMYroe26WYalil77FoDi9qh59eK5xNr -
15-16级
- 这题说是要通过ssl发送本关密码才可以的获得下一关的密钥信息。需要用到openssl,使用openssl s_client -connect localhost -port 30001,在输入上关密码,得到cluFn7wTiGryunymYOu4RcffSxQluehd
-
16-17级
- 这一题说开放的端口在31000和32000中间的某一个开放了ssl服务的端口上,肯定要使用到端口扫描程序,这里就使用nmap, 扫描一个端口范围,找到应该使用的端口号
- 发现31518端口和31790端口开放了ssl服务,连接这个端口发送本关密钥。发现31518端口会将发送的内容直接返回,31790才是返回密码的正确端口。
- 返回的是一段ssh私钥,不难猜想这是下一关连接的私钥信息,先存起来再说,直接在当前目录写发现没有权限,这样就需要写到/tmp目录下了
- 用这个私钥去连接第17关ssh -i rsa.priv bandit17@localhost
- 在cat /etc/bandit_pass/bandit17
得到密码xLYVMN9WE5zQ5vHacb0sZEVqbrp7nBTn