Bandit

Posted by rk700 on July 3, 2014
  • bandit0
    只需要ssh登陆即可,登陆后有文件readme
  • bandit1
    用刚才得到的密码登陆,要读一个文件名为-的文件。搜了下,开始有的说用--,这表示选项的结束,但我试了cat -- -不行,因为cat-当作是stdin了 后来搜,发现直接./-就可以
  • bandit2
    这次要读一个文件名包含空格的文件,直接用\ 就可以,实际上tab补全就这么做了……或者用引号把文件名括起来也可以

  • bandit3
    这次是一个隐藏文件,以dot开头的文件名
  • bandit4
    这次说文件是唯一一个人类可读的,于是用
    find inhere/ -type f -exec file {} \;
    发现唯一一个格式是ASCII的文件
  • bandit5
    这次给了几个限制,比如文件大小,执行权限等等。还是用find
    文件大小用选项-size 1033c,权限的话,-perm /111代表u或g或o有执行权限,! -perm /111代表均没有执行权限 最后用的命令是
    find inhere/ -type f -size 1033c ! -perm /111 -exec file {} \;

  • bandit6
    这次给了文件的用户名和组名,还是用find:
    find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/null

  • bandit7
    我是直接用grep搜的:
    grep millionth data.txt

  • bandit8
    先排序,再找唯一的一行:
    sort data.txt | uniq -u

  • bandit9
    先用strings找到所有可读的行,然后用sed去掉不是以=开头的行:
    strings data.txt | sed '/^[^=]/d'

  • bandit10
    linux下面直接就有base64解码
    base64 -d data.txt

  • bandit11
    python2有rot13编码

  • bandit12
    第一步是要把hex dump恢复:
    xdd -r data.txt data
    之后就不断解压缩,通过file来判断文件类型,用gzip -d, bzip2 -d, tar xf来解压缩
  • bandit13
    这道题直接给了私钥,可以登陆bandit14:
    ssh -i sshkey.private bandit14@localhost

  • bandit14
    要连接到本机的30000端口:
    echo 'BfMYroe26WYalil77FoDi9qh59eK5xNr' | nc 127.0.0.1 30000

  • bandit15
    这道题要用ssl连接。首先用
    openssl s_client -connect 127.0.0.1:30001
    输入密码后是什么heartbeating。正好有提示,因为我们的密码是以B开头的。再次加上quiet选项:
    openssl s_client -quiet -connect 127.0.0.1:30001
    然后输入密码即可
  • bandit16
    首先找到开着的端口:
    nmap -p31000-32000 -sV 127.0.0.1
    发现了几个,有些是echo,直接就不用管了,剩下的是要用ssl连的。一个个试发现31790是正确的。返回了一个私钥
  • bandit17
    直接比较两个文件
    diff -u password.*

  • bandit18
    登陆后会立刻登出,所以我们给ssh加上命令:
    ssh bandit18@bandit.labs.overthewire.org 'cat readme'

  • bandit19
    给了一个setuid的程序,会运行其他程序,于是我们写一个脚本来读密码文件,再用setuid的程序执行这个脚本即可。注意要用sh而不是bash,因为bash会忽略setuid

  • bandit20
    这道题要连两个终端上去,一个开nc监听
    echo "GbKksEFF4yrVs6il55v6gwY5aVje5f0j" | nc -l 34567
    另一个运行setuid的程序。然后nc那边就收到答案
  • bandit21
    cron.d下面找到文件cronjob_bandit22,阅读后发现密码会存到/tmp下的一个文件里,直接查看那个文件得到答案
  • bandit22
    同上一道题,阅读后发现也是将密码存到某文件里,文件名按照其构造方式得到:
    echo I am user bandit23 | md5sum | cut -d ' ' -f 1

  • bandit23
    同上,不过这次会定期执行某文件夹下的脚本。于是我们写一个读取密码的脚本放在其下。