OverTheWire的bandit游戏1

文章目录

    • 介绍
    • 题目
      • bandit0
      • bandit1
      • bandit2
      • bandit3
      • bandit4
      • bandit5
      • bandit6
      • bandit7
      • bandit8
      • bandit 9
      • bandit 10
      • bandit 11
      • bandit 12
      • bandit13
      • bandit14
      • bandit15

介绍

信息安全作为作为一个早睡晚起的学科(早上睡觉晚上起床),需要掌握海量的基础知识来支撑后期的学习.而兴趣是我们能坚持下去的动力.遇到了一个很有意思的网站http://overthewire.org/wargames/ 以闯关的形式来学习知识,在游戏中体验学习的快乐话不多说,开始基础游戏bandit


题目

bandit0

这一关主要是学习使用ssh进行连接.我这里使用MobaXterm进行连接。
每一个关卡的用户名都是本关卡的名称,比如本关ssh的用户名就是bandit0,然后每一关的任务就是找到下一关ssh连接的密码。
进入以后使用命令ls查看当前目录下面都有什么文件或文件夹。发现有一个readme文件。用cat查看文件内容.得到下一关的密码

ls
cat readme

bandit1

任务:下一关密码保存在home目录下的-文件中
先用ls命令查看当前目录下的内容.发现有一个文件名以 -开头.如果现在使用cat - 是行不通的.因为linux总是用-后面接收命令执行的参数如ls -l那么怎么查看-文件里面内容呢.这就要介绍./
在linux中./表示当前目录../表示上一层目录.所以这里使用

cat ./-

bandit2

任务:下一关密码保存在名叫home目录下spaces in this filename中。这一个关考察我们对空格的掌握。linux的文件名中的特殊字符需要转移。所以文件名打出来的应该是spaces\ in\ this\ filename
linux自带补全功能,所以我们也可以使用tab键自动补全

cat spaces\ in\ this\ filename

bandit3

任务:下一关密码在inhere目录下面的一个隐藏文件中。
cd inhere进入目录后,当我们使用ls并不能发现隐藏的文件。linux的隐藏文件以.开头。使用ls并不能显示,这个时候需要使用命令
ls -a这样会显示本目录下面所有的文件。发现**.hidden**文件。

cat inhere\.hidden

bandit4

任务:下一关密码保存在inhere目录下的一个人类可读的文件中(这里大致说的是ASCII码)
cd inhere进入目录,ls -al发现有10个文件。随意查看一个发现文件内容乱码。这就是目标中可能提到的人类可读。使用file ./*可以看出

./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data

可以看到file07是ASCII text。保存着下一关的密码。所以最后使用命令

./* | grep ASCII | cut -b -9 | xargs cat

bandit5

任务:下一关的密码保存在inhere目录下的某个地方。而且这个文件满足下面的三个条件1.人类可读的。2.文件大小为1033字节。3.不可执行。
我们先查看当前目录ls发现有很多个文件夹,每个文件夹中又有很多文件。肯定不能手动找。那就根据三个规则来找文件。

find . -type f -size 1033c | xargs cat

bandit6

任务:下一关的密码保存在服务器的某个地方,并且这个文件满足下面三个条件:1.属于用户bandit7 2.属于组bandit6 3.文件大小为33字节
这一题还是考察我们find命令的使用。主要涉及-user 符合指定的拥有者的文件或者目录 -group 查找符合指定的组的文件或目录 -size 查找符合指定的文件大小的文件

find / -type f -user bandit7 -group bandit6 -size 33c | xargs cat

对整个服务器进行查找,找到密码

bandit7

任务:下一关的密码在文件data.txt文件中单词millionth旁边。
还是先用ls命令查看,发现目录下面就有一个data.txt文件。先用wc data.txt文件查看一下文件大小。

bandit7@bandit:~$ wc data.txt
  98567  197133 4184396 data.txt
  行数    单词数  字节数  文件名

这里就要使用管道符|用grep抓取需要的内容。grep 会把匹配正确的行打印出来 所以最终命令为

cat data.txt | grep millionth

bandit8

任务:密码保存在data.txt文件中,而且密码这一行只出现了一次。也就是说有很多重复行。使用uniq 报告或忽略文件中的重复行来达到目的。

sort data.txt | uniq -u
只显示在文件中出现了一次的行

bandit 9

任务:密码在data.txt文件中以几个‘=’开头的人类可读的字符串中。
先查看文件类型,发现文件类型是二进制。要在二进制中找字符串最好使用的命令是string 在对象文件或二进制文件中查找可打印的字符串

file data.txt
strings data.txt  | grep ==

bandit 10

密码在data.txt文件中,并且包含了base64编码。base64编码的典型特征就是最后两个=号尝试一下。发现了确实有一行base64编码。那进一步使用base64 -d进行解码

grep == data.txt
grep == data.txt | base64 -d

bandit 11

任务:密码在data.txt文件中,并且所有的小写和大写字母都经过rot13加密。ROT13原理相当下面的替换

ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZABCDEFGHIJKLM

在linux中有tr 将字符进行替换压缩和删除 我们可以使用这个命令进行响应的替换。

cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' 

bandit 12

这一关密码在data.txt文件中,这个文件是一个被多次压缩的十六进制文件。这一关主要考察的就是我们对各种压缩命令的掌握。

bandit12@bandit:/home$ ls -ld bandit12
drwxr-xr-x 2 root root 4096 Oct  7 18:43 bandit12

可以看到我们对于bandit12目录(当前目录)只有可读的权限。不能在次目录下面创建文件和修改文件。在提示中提到了/tmp目录下可以修改。linux会将缓存或临时文件放在/tmp目录下面,并定时清理。而这里拥有执行权限。在这里创建一个目录,将data.txt拷贝过来。

bandit12@bandit:~$ mkdir /tmp/myfiletest1
bandit12@bandit:~$ cp data.txt /tmp/myfiletest1

因为文件是16进制文件,用xxd -r data.txt > data将十六进制转为二进制文件。如果不知道是什么压缩方式可以使用file命令。后面就是重复使用下面几个解压缩命令:

gunzip 解压被gzip压缩过的文件,通常以.gz结尾。
gunzip 等价于 gzip -d 命令
bzip2 将文件压缩成bz2格式,压缩包通常以.bz2格式结尾。
解压缩命令为 bzip2 -d
tar linux下的归档使用工具,用来打包和备份。
tar -zxvf 解包并解压

一直循环解压解包最后就得到密码了

bandit13

任务提示说密码在**/etc/bandit_pass/bandit14中,但是文件只能被bandit14读取。而我们现在才bandit13。后面又提示我们本目录下面有bandit14的ssh的私钥privatekey**利用ssh可以连接到bandit14。

ssh -i bandit14@localhost ./sshkey.private

连接成功,查看下一关的密码

bandit14@bandit:~$ cat /etc/bandit_pass/bandit14

bandit14

当我们在本关的localhost的30000端口提交本关的密码,就会返回下一关的密码。本关就是要学会使用各种网络连接工具。可以使用telnet,nc,ssh等工具

bandit14@bandit:~$ nc localhost 30000
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Correct!
BfMYroe26WYalil77FoDi9qh59eK5xNr

bandit15

题目中说在localhost的30001端口使用SSL提交本关的密码就会得到下一关的密码。网上说要使用openssl进行连接。Google发现了可以使用OpenSSL的一个命令测试HTTPS的服务。
openssl s_client -connect :

openssl s_client -ign_eof -connect localhost:30001
BfMYroe26WYalil77FoDi9qh59eK5xNr
Correct!
cluFn7wTiGryunymYOu4RcffSxQluehd

你可能感兴趣的:(OverTheWire)