wargames bandit 闯关笔记

  • Level 0
account : bandit0  
password : bandit0 
使用secureCRT 连接服务器
  • Level 0-1
account : bandit0  
password : bandit0 
使用cat命令查看readme文件
readme : boJ9jbbUNNfktd78OOpsqOltutMc3MY1
  • Level 1-2
account : bandit1
password : boJ9jbbUNNfktd78OOpsqOltutMc3MY1
文件名是: "-",如果是其他名字直接 cat filename 就行了,如果是 "cat - " 的话,就有一些小问题,因为 bash 中会用 "-" 来接受命令行参数,未避免冲突,我们使用 "./" 来表示当前目录,那 "-" 文件就表示为 "./-"。
 - : CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
  • Level 2-3
account : bandit2
password : CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
"ls" 查看文件,注意 spaces in this filename 是一个文件,而不是四个,虽然文件名存在空格,但是 Linux 有自动补全的功能,输入 "cat s" 后,按一下 Tab 键就自动补全了
spaces in this filename : UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
  • Level 3-4
account : bandit3
password : UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
"ls -a" 显示所有文件及目录 ( ls 内定将文件名或目录名称开头为 "." 的视为隐藏档,不会列出 ), "." 开头的文件为隐藏文件,故 "ls" 没有列出
.hidden : pIwrPrtPN36QITSp3EQaw936yaFoFgAB
  • Level 4-5
account : bandit4
password : pIwrPrtPN36QITSp3EQaw936yaFoFgAB
inhere 文件夹中存在 10 个文件,用 Linux 的 "file" 命令辨识文件类型,"*" 是通配符,只有 "-file07" 文件类型不一样,八九不离十就是它了。
-file07 : koReBOKuIDDepwhWk7jZC0RTdopnAYKh
  • Level 5-6
account : bandit5
password : koReBOKuIDDepwhWk7jZC0RTdopnAYKh
"find . -size 1033c""." 查找当前目录以及子目录,-size 1033c 指定文件大小为 1033 bytes
./maybehere07/.file2 : DXjZPULLxYr17uwoI01bNLQbtFemEgo7
  • Level 6-7
account : bandit6
password : DXjZPULLxYr17uwoI01bNLQbtFemEgo7
find / -group bandit6 -user bandit7 -size 33c 2>/dev/null	
"/" linux 根目录,从最顶层开始查找,"2>/dev/null""2" 表示错误输出,">" 是重定向符号表示把信息送到哪里,"/dev/null" 是 Linux 黑洞.
/var/lib/dpkg/info/bandit7.password : HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
  • Level 7-8
account : bandit7
password : HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
grep millionth data.txt 
命令讲解 "grep match_pattern file_name" ,在文件中搜索一个单词,命令会返回一个包含 “match_pattern”  的文本行
data.txt : cvX2JJa4CFALtqS87jk27qwqGhBM9plV
  • Level 8-9
account : bandit8
password : cvX2JJa4CFALtqS87jk27qwqGhBM9plV
sort data.txt | uniq -u
sort 命令用于将文本文件内容加以排序,可针对文本文件的内容,以行为单位来排序。
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。(当重复的行并不相邻时,uniq 命令是不起作用的)
data.txt : UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
  • Level 9-10
account : bandit9
password : UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
strings data.txt | grep ==
strings 是在文件中查找可打印字符串并输出长度为 4 个或更多的字符串,遇到换行或空字符结束,用 grep 命令筛选 含有 "==" 的字符串。
data.txt : truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
  • Level 10-11
account : bandit10
password : truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
base64 -d data.txt 
-d 解码  不加参数是编码
data.txt : IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
  • Level 11-12
account : bandit11
password : IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
cat data.txt | tr 'a-zA-Z''n-za-mN-ZA-M'
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
data.txt : 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
  • Level 12-13
account : bandit12
password : 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
用 " xxd -r" 将 16 进制文件转换为二进制文件
用file命名查看压缩软件
附tar命令手册:https://man.linuxde.net/tar
data.txt : 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
  • Level 13-14
account : bandit13
password : 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
ssh -i sshkey.private bandit14@localhost

data.txt :4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
  • Level 14-15
account : bandit14
password : 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
nc localhost 30000
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。
使用netcat命令所能完成的事情令人惊讶。
data.txt :BfMYroe26WYalil77FoDi9qh59eK5xNr
  • Level 15-16
account : bandit15
password : BfMYroe26WYalil77FoDi9qh59eK5xNr
openssl s_client -connect localhost:30001
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
s_client  通用的SSL/TLS客户端测试工具
data.txt :cluFn7wTiGryunymYOu4RcffSxQluehd
  • Level 16-17
account : bandit16
password : cluFn7wTiGryunymYOu4RcffSxQluehd
nmap -sV localhost -p 31000-32000

nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。
-sV:探测服务版本信息;
|:管道符,上一条命令的输出,作为下一条命令参数。
附: 这个题nmap报 
31790/tcp open  tcpwrapped
暂时跳过
data.txt :xLYVMN9WE5zQ5vHacb0sZEVqbrp7nBTn
  • Level 17-18
account : bandit17
password : xLYVMN9WE5zQ5vHacb0sZEVqbrp7nBTn
diff passwords.old passwords.new
data.txt :kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
  • Level 18-19
account : bandit18
password : kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
ssh bandit18@localhost -t cat readme
-t: 远程执行命令
data.txt :IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x
  • Level 19-20
account : bandit19
password : IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x

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

linux文件权限:文件属性字段总共有10个字母组成;第一个字符代表文件的类型。 
在后九个中,其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。 

data.txt :GbKksEFF4yrVs6il55v6gwY5aVje5f0j
以下两个知识点讲的明明白白。
知识点:
https://blog.csdn.net/weixin_37998647/article/details/79217027
http://ybin.cc/linux/linux-file-permission-and-uid-euid/
  • Level 20-21
account : bandit20
password : GbKksEFF4yrVs6il55v6gwY5aVje5f0j

nc -l -p 2333 < /etc/bandit_pass/bandit20
新建ssh
./suconnect 2333

使用 nc 监听一个端口,并推送 /etc/bandit_pass/bandit20 文件内容。相当于在这个端口上架设了一个简易的服务器。
data.txt :gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
  • Level 21-22
account : bandit21
password : gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr

cd /etc/cron.d/
cat cronjob_bandit22
cat /usr/bin/cronjob_bandit22.sh
cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

 "* * * * * bandit22   /usr/bin/cronjob_bandit22.sh &> /dev/null" 中的 "*" 表示每分钟执行一次这个脚本
 &>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中
 
data.txt :Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI
知识点:
https://zh.wikipedia.org/wiki/Cron
  • Level 22-23
account : bandit22
password : Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI

cat /usr/bin/cronjob_bandit23.sh
echo I am user bandit23| md5sum
cat /tmp/8ca319486bfbbc3663ea0fbe81326349

实现的功能是取当前用户名,然后计算 I am user $当前用户名 的md5值,将$当前用户名密码的复制到tmp目录下的对应的md5值的文件中,
data.txt :jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
  • Level 23-24
account : bandit23
password : jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n

cat /etc/cron.d/cronjob_bandit24
cat /usr/bin/cronjob_bandit24.sh
cd	/var/spool/bandit24
vim getpass.sh
写入	cat /etc/bandit_pass/bandit24 > /tmp/bandit24pass
cat /tmp/bandit24pass

timeout:运行指定的命令,如果在指定时间后仍在运行,则杀死该进程。用来控制程序运行的时间。
data.txt :UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ

shell特殊符号:https://www.cnblogs.com/shamao/p/11195517.html
shell流程控制:https://www.runoob.com/linux/linux-shell-process-control.html
vim教程:https://www.runoob.com/linux/linux-vim.html
  • Level 24-25
account : bandit24
password : UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ

利用python生成密码本
将密码本定向至nc localhost 30002
即可看到下一关密码
data.txt :uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG
  • Level 25-26
account : bandit25
password : uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

cat /etc/passwd|grep bandit26
在more命令还没有结束的时候按v进入vim编辑模式。再就是用vim特有的:e file,vim模式下的e命令可以导入文件到编辑器内,我们知道密码的所在,因此就可以用e命令来导入密码文件
缩小窗口
ssh bandit26@localhost -i ./bandit26.sshkey
:e  /etc/bandit_pass/bandit26

查看其某用户用的什么shell 可以查看/etc/passwd。
data.txt :5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z

linux more:https://www.runoob.com/linux/linux-comm-more.html

passwd文件的格式为:
1.账号名称:即登陆时的用户名
2.密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了
3.UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员
4.GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的
5.用户信息说明栏: 用来解释这个账号是干什么的
6.家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里
7.Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这里设置的,如果要想更改登陆后使用的shell,可以在这里修改。另外一个很重要的东西是有一个shell可以用来替代让账号无法登陆的命令,那就是/sbin/nologin。

  • Level 26-27
account : bandit26
password : 5czgV9L3Xx8JPOyRbXh6lQbmIOWvPT6Z

vim 下
:set shell=/bin/sh
:sh					(两个结合会弹出shell)
./bandit27-do cat /etc/bandit_pass/bandit27

data.txt :3ba3118a22e93127a4ed485be72ef5ea
  • Level 27-28
account : bandit27
password : 3ba3118a22e93127a4ed485be72ef5ea

转到一个有权限的目录
git clone ssh://bandit27-git@localhost/home/bandit27-git/repo
README就是密码

data.txt :0ef186ac70e04ea33b4c1853d2526fa2

你可能感兴趣的:(PWN,pwn)