Homework 2020/01/15(关键词:linux,bandit)

Homework

Wang yuan can 

January 15, 2020

@雨人网安

作业

作业开始

1.作业提要

  • Linux命令,Bandit wargame.
  • Linux命令
  • 在vm装linux镜像文件

2.作业分析

2.1 通关Bandit wargame,做到26-27关. link:https://overthewire.org/wargames/bandit/


要求:写出清晰明确的解题过程,阐明解题思路;在第二天的汇报中能够动手实操并讲解

ps:每通过一关,输入exit命令退出后重新进入

游戏开始:

level 0 ==> level 1

使用linux远程命令运行ssh

ssh -p 2220 [email protected]

ssh命令解析

    ssh命令格式:
    ssh + -p ssh开放端口 + 客户端用户名@服务器ip地址或者域名

连接成功后,需要查看readme文件内容,使用cat命令

cat readme

The key :boJ9jbbUNNfktd78OOpsqOltutMc3MY1

 End

level 1 ==> level 2

这一关的意思是,存密码的文件名为-,我们要查看这个文件的内容。注意到‘-’在linux中是一个特殊的字符,如要查看该文件的内容需要指定是当前路径下的。

cat ./-

注:关于特殊字符'-'的一些说明

1.作为选项,前缀[option, prefix]使用。用于命令或者过滤器的选项标志;操作符的前缀。
2.用于stdin或者stdout的重定向的源或目的[dash].在tar没有bunzip2的程序补丁时,我们可以这样: bunzip2 linux-2.6.13.tar.bz2 | tar xvf - 。将前面解压的数据作为tar的标准输入(这里使用一个-表示)
3.表示先前的工作目录(previous working directory)

./说明是当前路径下的文件

The key: CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

End

level 2 ==> level 3

这一关的意思是说,保存密码的文件名为“spaces in the filename”,它在home目录下,我们仍然需要查看这个文件中的内容,但是这个文件名中包含了空格,直接使用cat命令无法查看,我们需要使用双引号将文件名包裹起来,绕过空格。

cat  “space in this filename”

The key: UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

End

level 3 ==> level 4

这一关的密码放在一个隐藏文件中,我们需要用ls -a来查看这个隐藏文件.hidden,题目中已经告诉我们这个隐藏文件放在inhere目录下,ls -a之后发现了这个目录,进入这个目录,然后ls -a查看到这个文件,最后用cat查看文件内容

ls -a
cd inhere/
ls -a
cat .hidden

The key: pIwrPrtPN36QITSp3EQaw936yaFoFgAB

End

level 4 ==> level 5

写有通关密码的文件放在inhere目录下,这个文件类型是可辨识的,我们要用file ./*查看当前目录下所有文件的类型。(同样要注意-特殊字符的影响)

ls -al
cd inhere/
file ./*
cat ./-file07

The Key: koReBOKuIDDepwhWk7jZC0RTdopnAYKh

End

level 5 ==> level 6

密码文件在inhere目录下的某个文件夹中,这个文件夹的类型是可识别的,文件大小为1033字节

ls -r
cd inhere
ls -r
find ./ -type f -size 1033c
cat  ./maybehere07/.file2

The Key :DXjZPULLxYr17uwoI01bNLQbtFemEgo7

End

level 6 ==> level 7

存密码的文件放在服务器的某个位置,为bandit7用户所有,属于bandit6组,文件大小为33个字节

find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
cat /var/lib/dpkg/info/bandit7.password
这里 -user指定user组, -group指定group组, -size指定大小,后面的 2>/dev/null因为find命令在根目录下查找会经常有很多权限的报错信息,所有在linux中通常用这种方式将错误信息重定向到“黑洞中”

The Key: HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

End

level 7 ==> level 8
密码存放在文件的millionth这个单词的后面,我们需要定位到这个单词的位置。
cat data.txt|grep millionth

The Key: cvX2JJa4CFALtqS87jk27qwqGhBM9plV

End

level 8 ==> level 9

本题是说,存密码的文件名为data.txt,而它只在文件中出现了一次

sort data.txt|uniq -u

The Key :UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

End

level 9 ==> level 10

本题的密码存在data.txt文件中,是一小段可辨识的字符串,它是以一些=符号开始的,因此我们需要获取可打印的文件内容。

strings data.txt

The Key: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

End

level 10 ==> level 11

存密码的文件被加密了,加密方式为base64,因此需要用base64进行解密:

base64 -d data.txt

The Key : IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

End

level 11 ==> level 12

密码文件中字母的的顺序旋转了13个位置,就相当去26个字母的前13个位置与后13个位置调换了。那么我们就是用tr命令进行调换回来。

cat data.txt | tr 'a-zA-Z' 'n-za-mN-ZA-M'

The Key : 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

End

level 12 ==> level 13

密码存放的文件被多重压缩了,需要根据文件类型不断进行解压,直到解压出来的文件可以用cat直接查看为止。

xxd -r data.txt data2
file data2
data2: gzip compressed data, was "data2.bin", from Unix, last modified: Thu Jun 6 13:59:44 2013, max compression
mv data2 data.gz
gzip -d data.gz
file data
data: bzip2 compressed data, block size = 900k
bzip2 -d data
bzip2: Can't guess original name for data -- using data.out
file data.out
data.out: gzip compressed data, was "data4.bin", from Unix, last modified: Thu Jun 6 13:59:43 2013, max compression
zcat data.out > data3
file data3
data3: POSIX tar archive (GNU)
tar -xvf data3
data5.bin
file data5.bin
data5.bin: POSIX tar archive (GNU)
tar -xvf data5.bin
data6.bin
file data6.bin
bzip2 -d data6.bin
bzip2: Can't guess original name for data6.bin -- using data6.bin.out
file data6.bin.out
data6.bin.out: POSIX tar archive (GNU)
tar -xvf data6.bin.out
data8.bin
file data8.bin
data8.bin: gzip compressed data, was "data9.bin", from Unix, last modified: Thu Jun  6 13:59:43 2013, max compression
zcat data8.bin > data9.bin
file data9.bin
data9.bin: ASCII text
cat data9.bin
8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

The Key: 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

End

 level 13 ==> level 14

这道题我们使用bandit13用户登陆的,但是题目说需要我们用bandit14用户登陆才能查看密码,并且给了我们ssh的私钥,那么我们就可以利用ssh -i参数指定私钥进行登陆

ssh -i sshkey.private bandit14@localhost
cat  /etc/bandit_pass/bandit14

The Key :4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e

End

level 14 ==> level 15

我们要把这关的密码提交到localhost的30000端口上,用telnet连接到本地的30000端口上,然后把这关的密码发送过去.

telnet localhost 30000 

The key: BfMYroe26WYalil77FoDi9qh59eK5xNr

End

level 15 ==> level 16

这道题用openssl命令,这个命令不太常用,直接openssl help查看帮助,发现命令openssl s_client help,根据帮助找到登陆命令

openssl s_client -connect localhost:30001

The Key:cluFn7wTiGryunymYOu4RcffSxQluehd

End

level 16 ==> level 17

The Key:

End

level 17 ==> level 18

这题需要用到diff来比较文件的一致性,此题有两个文件,passwords.new和passwords.old,也就是新文件和旧文件,cat查看两个文件时,发现文件内容极尽相似,这时候我们要一个一个的对比文件的差异性那是不现实的,为此,我们需要用到diff来快速比较此两个文件的差异。

diff passwords.new passwords.old

The Key:kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd

End

level 18 ==> level 19

ssh -p 2220 [email protected] cat readme

The Key:IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x

End

level 19 ==> level 20

./bandit20-do cat /etc/bandit_pass/bandit20

The Key:GbKksEFF4yrVs6il55v6gwY5aVje5f0j

End

level 20 ==> level 21

nc -l 2333 < /etc/bandit_pass/bandit20 &

The Key:gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr

End

level 21 ==> level 22

The Key:Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI

End

level 22 ==> level 23

The Key:jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n

End

level 23 ==> level 24

 

mkdir /tmp/bandit23
chmod 777 /tmp/bandit23
cd /tmp/bandit23
vim shell.sh

#!/bin/bash
cat /etc/bandit_pass/bandit24 >> /tmp/bandit/pass

The Key:UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ

End

level 24 ==> level 25

from pwn import *

r = remote('localhost', 30002)
for i in range(0, 10):
    for j in range(0, 10):
        for k in range(0, 10):
            for p in range(0, 10):
                flag = str(i) + str(j) + str(k) + str(p)
                s = "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ "+ flag
                r.sendline(s)
                response = r.recvline()
                if 'Wrong!' not in response:
                    print 'Correct! ' + response

The Key:uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

End

level 25 ==> level 26

ssh -i ssh.private bandit26@localhost
:e /etc/bandit_pass/bandit26

The Key:5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z

End

level 26 ==> level 27

vim模式下
:set shell=/bin/sh
:sh

The Key:3ba3118a22e93127a4ed485be72ef5ea

End

2.2 写一份命令速记表,分类整理Linux各种常用命令,给出常用使用方法

操作文件及目录

 

 系统常用命令

 压缩解压缩

 文件权限操作

 Linux常用快捷键

2.3 装一台属于自己的Linux,发行版任选

3.思考总结

4.参考资料

bandit通关日志:https://www.jianshu.com/p/bf8cc6b0efd1

linux练习平台WarGame之bandit通关日志:https://blog.csdn.net/chest_/article/details/101123204

Linux最常用命令!简单易学,能解决95%以上的问题!https://blog.csdn.net/weixin_38405253/article/details/93815774

 

猜你喜欢

转载自www.cnblogs.com/ribver/p/12199371.html