文章目录
一个基础linux命令的靶场,阳了在家摸会鱼
注意一下,这些答案都是动态的这次有用下次就换新的一批了,所以要抓紧做完–到后面有点不想做了属实
可以使用man 来了解命令
- 例:man ls
level 0
ls命令看待只有一个readme文件,cat阅读
NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL
level 1
发现文件名为 - 不可直接打开
使用 cat ./* more ./*
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
创建方法
touch ./-
mkdir ~/dir/-mydir
mkdir -- -dir2
level 2
文件名中存在空格
直接cat ./filename
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
level 3
进入inhere后什么都没发现
使用ls -a命令成功找到
2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe
level 4
cat ./*
得到乱码中含有9lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
把9去掉就成功登入了
或者file ./*辨识文件类型
再cat ./-file7
level5
/>du -sh * 查看文件夹大小
然后发现不太对,可以每个文件夹进入然后file ./*查看,但是很浪费时间
使用find命令现pwd查找现在路径,然后
/>find /home/bandit5/inhere -type f -size 1033c 成功找到该文件
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
level 6
find大法好
/>find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/null
其中 2>/dev/null避免很多permission denied错误
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
level7
find ~ -name data.txt -exec grep millionth {} ;
-exec grep miullion {} ;:对于每一个找到的文件,执行grep miullion命令。其中{}表示文件名
TESKZC0XvTetK0S9xNwm25STk5iWrBvP
level 8
因为uniq只对相邻行起作用所以现sort
/>sort data.txt|uniq -u
uniq -u 只显示出现过一次的行
EN632PlfYiZbn3PhVK3XOGSlNInNE00t
level 9
grep不大确定直接肉眼
也可以直接strings寻找到
G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
level 10
strings /home/bandit10/data.txt |base64 -d
6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
level 11
strings
在线rot13解密就好
JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
level 12
有点难,需要查看文件头不停解压缩
因为是16进制dump,所以先xxd -r data.txt data
然后file改后缀解压缩循环
注意tar命令后需要接xf
wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw
level13
要找一个ssh私钥
私钥存在id_rsa
从服务器拷贝到本地
/>scp -P 2220 root@192.168.167.131:/home/root/dome.png /home/user/
/home/bandit17/.ssh/id_rsa
ssh bandit12@bandit.labs.overthewire.org -p 2220
但是他perimision denied了—找错关卡啦
找到正确的,就在~下,拷贝出来
远程连接命令
/>ssh -i .\id_rsa bandit14@bandit.labs.overthewire.org -P 2220
错误
要在13里登录14
fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq
level14
nc 127.0.0.1 30000
–注意,我用purple kali使用这条命令会错,要自己apt install ncat使用ncat才行
jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt
level 15
openssl s_client -ign_eof -connect localhost:30001
openssl s_client -help找到 -ign_eof
JQttfApK4SeyHwDlI9SXGR50qclOAil1
level 16
先nmap -p 31000-32000 localhost 扫描
然后openssl s_client -connect localhost:30001试
拷贝下来私钥,
mkdir /tmp/111
把私钥放里面,chmod 777 rsa_id 提权
ssh -i .\id_rsa bandit17@bandit.labs.overthewire.org -p 2220 远程登录
VwOSWtCA7lRKkTfbr2IDh6awj9RNZM5e
level 17
先去
/>cat /etc/bandit_pass/bandit17 找到17的密码
/>diff *.old *.news 找到密码的不同之处
hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg
glZreTEH1V3cGKL6g4conYqZqaEj0mte–尝试后发现错误
然后退出到最后发现进入不了18关
level 18
看(174条消息) bandit(13-34)_shell for user bandit26 is not /bin/bash_半夜好饿的博客-CSDN博客发现可以
/>ssh bandit18@bandit.labs.overthewire.org -p 2220 "bash --norc"忽略错误
awhqfNnAbc1naukrpqDYcF95h7HoMTrC
level 19
根据提示,先./bandit20-do
说加上用户id,但是输入数字说没有此文件夹,
所以直接
/>./bandit20-do cat /etc/bandit_pass/bandit20
VxCazJaVykI6W36BkBU0mJTCM8rR95XT
level 20
啊 chat我的神!
/> nc -l -p 3333 </etc/bandit_pass/bandit20 &
**<**输入密码
**&**保持后台开启
/>./suconnect 3333
NvEJF7oVjkddltPSrdKEFOllh9V1IBcq
level21
一个程序正在定期从 cron (基于时间的作业调度程序)自动运行。在/etc/cron.d/中查找配置并查看正在执行的命令。
那先/>ls /etc/cron.d/
显然先找我们下一关的,然后/>cat cronjob_bandit22
/>cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
WdDozAdTM2z9DiFEQ2mGlwngMfj4EZff
level 22
继续,先/>cd /etc/cron.d/
/>cat cronjob_bandit23
/>cat /usr/bin/cronjob_bandit23.sh
得到
#!/bin/bash
myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"
cat /etc/bandit_pass/$myname > /tmp/$mytarget
执行一下
/>sh /usr/bin/cronjob_bandit23.sh
得到Copying passwordfile /etc/bandit_pass/bandit22 to /tmp/8169b67bd894ddbb4412f91573b38db3
cat一下
WdDozAdTM2z9DiFEQ2mGlwngMfj4EZff
登不上去,发现错了是level22的我要level23的
先ls -l /usr/bin/cronjob_bandit23.sh 查看一下权限,发现没有写的权限
那我自己创建一个文件夹,写个sh脚本呢?发现cat: /etc/bandit_pass/bandit23: Permission denied 糟糕的
突然发现,定时脚本,那我md5一下看看有没有这个文件??
/>echo I am user bandit23 | md5sum | cut -d ’ ’ -f 1 ->确定文件名
/>cat /tmp/8ca319486bfbbc3663ea0fbe81326349
QYw0Y2aiA672PsMmh9puTQuhoz8SyR2G
level23
还是老规矩找脚本
得到
#!/bin/bash
myname=$(whoami)
cd /var/spool/$myname/foo || exit 1
echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
for i in * .*;
do
if [ "$i" != "." -a "$i" != ".." ];
then
echo "Handling $i"
owner="$(stat --format "%U" ./$i)"
if [ "${owner}" = "bandit23" ]; then
timeout -s 9 60 ./$i
fi
rm -rf ./$i
fi
done
解释一下脚本:运行并删除/var/spool/$myname/foo内的东西,
所以,应该写脚本放在/var/spool/bandit24/foo中
脚本如下
cat /etc/bandit_pass/bandit24 > /tmp/bandit24
/>cat /tmp/bandit24
VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar
level24
守护进程正在监听端口30002,如果给出 bandit24的密码和一个秘密的数字4位平码,它将给出 bandit25的密码。除了通过所有的10000种组合(称为蛮力强迫) ,没有其他方法可以检索到密码。
显然,需要暴力破解,网上找的脚本(176条消息) OverTheWire:Bandit通关WriteUp(2019.01.17完)_overthewire17_cynthrial的博客-CSDN博客
from pwn import *
conn = remote('localhost', '30002')
badline = conn.recvline()
for i in range(10000):
tmp = str(i).zfill(4)
print ('[+] Trying pincode: ' + str(tmp))
conn.sendline('VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar ' + tmp)
response = conn.recvline()
print(response)
if b'Wrong! Please enter the correct pincode. Try again.' not in response:
print('[+] Found pincode: ' + str(tmp))
break
啊,漫长的等待
9708!出来了,大概有小一个小时
/>echo “VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 9708” |nc localhost 30002
p7TaowMYrmu23Ol8hiZh9UvD0O9hpx8d
level 25
/>cat /etc/shells 没什么思路先看看
然后家里发现一个sshkey…
/>ssh -i bandit26.sshkey localhost加不加端口都不对
/>cat /etc/passwd
发现bandit26❌11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext
/>chsh -s /usr/bin/showtext 要输入密码?不知道
cat一下
#!/bin/sh
export TERM=linux
exec more ~/text.txt
exit 0
读取不出来
看wphttps://medium.com/secttp/overthewire-bandit-level-25-4724e2196657
发现从exec more ~/text.txt寻找突破口,
/>ssh bandit26@bandit.labs.overthewire.org -p 2220 -i bandit26.sshkey 注意调小窗口
然后摁v进入vim模式,在命令行输入/>:e /etc/bandit_pass/bandit26 —e为editor模式
c7GvcKlw9mC7aUQaPx7nwFstuAIBw1o1
level26
还是登入不上去
老办法通过vim的命令行改shell
上一关的这里在命令行输入/>:set /bin/bash
/>:sh
ls看到一个bandit27-do的可执行文件
/>/bandit27-do cat /etc/bandit_pass/bandit27
YnQpBuifNMas1hcUFk70ZmqkhUU2EuaS
level27
在/tmp里面自己创个文件夹在里面运行命令
/>git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo 注意:2220
密码在repo的READEME里
AVanL161y9rsbcJIsFHuw35rjaOM19nR
level28
老方法
然后/>git show可以查看文本差异
tQKvmcwNYcFS6vmPHIUSI3ShmsrQZK8S
level29
老方法
/>git branch -a 查看所有分支
/>git checkout remotes/origin/dev 切换到该分支
/>git show
xbhV3HpNGlTIdnjUrdAlPzc2L6y9EOnS
level 30
快结束了!!!!
切换分支,啥也没有
/>git show-ref
59530d30d299ff2e3e9719c096ebf46a65cc1424 refs/heads/master
59530d30d299ff2e3e9719c096ebf46a65cc1424 refs/remotes/origin/HEAD
59530d30d299ff2e3e9719c096ebf46a65cc1424 refs/remotes/origin/master
831aac2e2341f009e40e46392a4f5dd318483019 refs/tags/secret
/>git show 831aac2e2341f009e40e46392a4f5dd318483019 找到密码
OoffzGDlzhAlerFJ2cAiz1D41JW1Mhmt
###level 31
老办法
cat README.md
依据他的要求创建key.txt
/>git add key.txt 放入暂存区
/>git commit -m “XXX” --将更改提交到本地 “”内随便谢谢
/>git push origin master 推到远处因为已经有连接了
rmCBvG56y58BXzv98yZGdO7ATVL5dW8y
level 32
>> ls
sh: 1: LS: not found
>> echo $SHELL
sh: 1: ECHO: not found
>> mman^H^H^H^H^H^H^H
sh: : not found
>> man sh
sh: 1: MAN: not found
>> man
sh: 1: MAN: not found
>> sh
sh: 1: SH: not found
>>
>> ^Z^H
sh: 1:: not found
>> cat
sh: 1: CAT: not found
>> ls
sh: 1: LS: not found
>> cd
sh: 1: CD: not found
>>
奇怪的东西。把所有命令都变成了大写
/>$0
/>cat /etc/bandit_pass/bandit33
odHo63fHiFqcWWJG9rLiLDtPm45KzUKy
level33
做完了