OVerTheWire:Banditt通关20-33(持续更新)

OVerTheWire:Banditt通关20-33(持续更新)@TOC

Level20-21

  • ls
    查看一下题目里的文件
  • nc -lv < /etc/bandit_pass/bandit20 &
    使用nc 监听一个端口并显示细节,收到连接后把20关的密码发过去,后台运行
  • ./suconnext [port]
    运行这个文件 后面带前面监听的端口号,它会发送下一关的密码过来
    OVerTheWire:Banditt通关20-33(持续更新)_第1张图片
  • 密码:gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr

Lv21-22

  • /etc/cron.d/
    cron 是一个定时执行工具,上面这个目录用来存放任何要执行的crontab文件或脚本
    OVerTheWire:Banditt通关20-33(持续更新)_第2张图片
  • cd/etc/cron.d/
    看一下文件夹里有些什么脚本
  • cat cronjob_bandit22
    看一下这个脚本写些什么,他说运行脚本会写个东西到默认文件目录下
  • /etc/cron.d$ cat /usr/bin/cronjob_bandit22.sh
    执行脚本
  • cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
    查看临时目录的文件
  • 得到密码
    Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI

Lv22-23

OVerTheWire:Banditt通关20-33(持续更新)_第3张图片

  • cat /usr/bin/cronjob_bandit23.sh
    看一下怎么用的
    意思是复制密码到一个临时文件夹中,文件夹名字是echo后面一段字符串的MD5
  • echo I am user bandit23 | md5sum
    选择23关试一下
  • /etc/cron.d$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349
    打开产生的文件
  • 密码
    jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n

Lv23-24

OVerTheWire:Banditt通关20-33(持续更新)_第4张图片

  • /var/spool/cron
    这个文件夹存放每个用户的crontab任务 每个目录以创建者的名字命名
  • vim getpass
    在bandit24用户的脚本文件夹种创建一个脚本getpass
    内容是 cat /etc/bandit_pass/bandit24 > /tmp/bandit24pwd :wq退出
    这里是自动执行并删除文件了 所以找了半天没有找到保存的这个文件,但是运行结果已经出来了
  • cat /tpm/bandit24pwd
    查看拷贝过来的密码
  • 密码
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ

Lv24-25

  • 这个题目大概意思是30002端口上有个程序在运行,你只要把24关的密码加上一个四位数的密码就发送过去,程序就会发回25关的密码,但是密码不知道,要暴力破解
  • 用python 的pwn写个跑密码的脚本,pwntools可以与远程的端口通讯
  • vim /tmp/conn.py 创建脚本
#coding=utf-8  
from pwn import *   # 导入包
conn = remote('localhost',30002) # 连接到本机的30002端口
badline = conn.recvline()  # 第一行没什么用
print(badline)             # 打出来看一下也是挺有用的,它会提示你密码之间是用空格连接
for i in range(10000):
	tmp = str(i).zfill(4)        # 做一个四位数的数字,前面空的用0填满
	print('try pincode' + str(tmp))
	conn.sendline('UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ '+tmp) #发送密码过去
	resp = conn.recvline()
	print (resp)
	if "Wrong" not in resp:                   # 如果返回的不是wrong,就打印返回结果然后退出
		print('got pin'+str(tmp))
		resp = conn.recvline()
		print(resp)
		exit(0)

  • 运行 python /tmp/con.py
    这里注意中间有个空格,如果密码的长度不对,返回的是Fail! 打印调试的时候用,执行的时候最好注释掉,不然可能会有点麻烦
    OVerTheWire:Banditt通关20-33(持续更新)_第5张图片

  • 密码
    uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

LV25-26

  • ls 可以看到主目录下有一个秘钥文件,ssh -i 登陆一下,结果发现闪退

  • 提示一下shell有问题,那么久cat 一下/etc/passwd
    bandit25❌11025:11025:bandit level 25:/home/bandit25:/bin/bash
    bandit26❌11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext
    bandit27❌11027:11027:bandit level 27:/home/bandit27:/bin/bash
    发现26最后面用的shell跟别的不一样,再cat一下这个文件看看,得到
    export TERM=linux

    more ~/text.txt
    exit 0

  • 意思是说终端是linnx终端,然后执行more 后面那个文件,然后退出,所有就有我们看到闪了一路字之后退出了
    把终端调小可以让more不一下子显示完,按V进入vim模式,按esc进入vim的命令输入界面,直接:e /etc/bandit_pass/bandit26 就把密码导到了文件中,可以直接看了

OVerTheWire:Banditt通关20-33(持续更新)_第6张图片

  • 密码
    5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z

Lv26-27

  • 这一关跟上关一样,还是自动退出,还是老方法,进入v模式,导入密码,结果显示权限不足,那么久涉及在
    vim中使用shell提升权限了
  • :sh可以在vim中使用shell
  • 查看 vim 使用了哪一个 shell
    :set shell ?
    -设置你想要试用的 shell
    :set shell=/path/to/shell
  • 这里我们设置
:set shell=/bin/sh
:sh

这样就得到了一个shell,ls一下,有两个文件,用第一个文件执行一下

./bandit27-do cat /etc/bandit_pass/bandit27

得到密码:3ba3118a22e93127a4ed485be72ef5ea
OVerTheWire:Banditt通关20-33(持续更新)_第7张图片

Lv27-28

OVerTheWire:Banditt通关20-33(持续更新)_第8张图片

  • 这个题主要是使用git克隆
  • 在临时目录下新建一个文件夹,切换到该目录下使用git clone 命令 密码与本关密码相同
  • 然后查看一下克隆来的内容
  • 得到密码:0ef186ac70e04ea33b4c1853d2526fa2

Lv29-30

OVerTheWire:Banditt通关20-33(持续更新)_第9张图片

  • 还是联系使用git log diff
  • 直接读出来密码是隐藏的 git log 一下,有一个修复信息泄露,应该就是修复密码明文了,用git diff 073c 185a
  • 果然文件的不同就是密码: bbc96594b4e001778eee9975372716b2

Lv30-31

OVerTheWire:Banditt通关20-33(持续更新)_第10张图片

  • 这里主要使用git show-ref命令
  • 看到有secret ,查看一下
  • 密码:47e603bb428404d265f59c42920d81e5

Lv31-32

OVerTheWire:Banditt通关20-33(持续更新)_第11张图片

  • 这一关是要把key.txt上传上去,还是先克隆下来
  • 切换到临时目录,用vim创建好文件,在克隆下来的文件目录下 git add -f key.txt
  • 然后git status 看一下状态
  • 然后git commit -m ‘add key.txt’ 提交
  • 然后push origin master 推到默认远程主机的master分支
  • 密码出来了:56a9bf19c63d650ce78e6ec0354ee45e

Lv32-33

在这里插入图片描述

  • 这里进去之后就是大写,命令什么的也不能执行,所以用到$0,这里$0表示shell本身,看一下这个shell属于谁,bandit33, 那么直接看33关密码就是了
  • 密码:56a9bf19c63d650ce78e6ec0354ee45e

END

  • 到这里bandit就结束了,大部分关卡都是参考了网上的资料,不过倒也觉得有些收获,从刚开始的打开vim就不知道如何关闭,到现在面对命令行的系统,至少不会害怕了,接下来开始下一个游戏吧!

你可能感兴趣的:(Over,The,Wire)