0115-06-侯舒舒(作业-linux)

2020年1月15日

任务

  1. 通关Bandit wargame,做到26-27关
    题目网址为:https://overthewire.org/wargames/bandit/
    要求:写出清晰明确的解题过程,阐明解题思路;在第二天的汇报中能够动手实操并讲解
  2. 写一份命令速记表,分类整理Linux各种常用命令,给出常用使用方法
  3. 装一台属于自己的Linux,发行版任选(明晚前搞定)
  1. 通关Bandit wargame,做到26-27关
    题目网址为:https://overthewire.org/wargames/bandit/
    要求:写出清晰明确的解题过程,阐明解题思路;在第二天的汇报中能够动手实操并讲解
  • 0-1级

    • 使用ssh -p 2220 bandit0@bandit.labs.overthewire.org
      登陆靶机使用ls查看下,发现目标文件。在使用ls -all 查看下。最后在cat一下目标文件,得到密码boJ9jbbUNNfktd78OOpsqOltutMc3MY1。
  • 1-2级

    • 使用上面的密码登陆。ls一下,发现一个目标-,但是直接cat打不开,使用pwd查看一下当前目录。在cat这个目录下的-。得到密码
      CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
  • 2-3级

    • 使用上面的密码登陆。ls一下,发现一个目标空格文件,这需要Tab按键补齐,自动将空格转义,或者给文件名加上双引号。得到密码
      UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
  • 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
  • 6-7级

    • 根据题意只能用find查找
      find / -size 33c -users bandit7 -group bandit6 2>/dev/null 后面的2>/dev/null因为find命令在根目录下查找会经常有很多权限的报错信息,所有在linux中通常用这种方式将错误信息重定向到“黑洞中”。查到到文件后。cat一下得到密码HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
  • 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
  • 9-10级

    • 直接使用cat命令是很多很杂乱的东西,可以通过string命令查看文件中的字符串,根据提示信息可得下一关密钥以若干个“=”开头,可以找到下一关的密码 使用strings data.txt
      truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
  • 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
  • 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
原文地址:https://www.cnblogs.com/demohou/p/12199339.html