170813 WarGames-Bandit(16-24)

1625-5 王子昂 总结《2017年8月13日》 【连续第315天总结】
A. WarGames
B.

Level 16

这次端口未知,只知道范围分布在31000-32000中,并且要分辨出使用SSL的端口
nmap扫描命令可以完成这个任务,-p表示指定端口,-sV表示识别服务

bandit16@bandit:~$ nmap -p 31000-32000 localhost -sV

Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-13 06:21 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00047s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 996 closed ports
PORT      STATE SERVICE VERSION
31046/tcp open  echo
31518/tcp open  msdtc   Microsoft Distributed Transaction Coordinator (error)
31691/tcp open  echo
31790/tcp open  msdtc   Microsoft Distributed Transaction Coordinator (error)
31960/tcp open  echo
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 41.22 seconds

这样就只剩两个msdtc服务的端口,分别用SSL连接发送尝试即可

bandit16@bandit:~$ openssl s_client -connect localhost:31518 -quiet
depth=0 CN = a9678380ab81
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = a9678380ab81
verify return:1
cluFn7wTiGryunymYOu4RcffSxQluehd
cluFn7wTiGryunymYOu4RcffSxQluehd
^C
bandit16@bandit:~$ openssl s_client -connect localhost:31790 -quiet
depth=0 CN = a9678380ab81
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = a9678380ab81
verify return:1
cluFn7wTiGryunymYOu4RcffSxQluehd
Correct!
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ
imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ
Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu
DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW
JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX
x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD
KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl
J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd
d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC
YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A
vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama
+TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT
8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx
SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd
HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt
SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A
R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi
Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg
R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu
L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni
blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU
YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM
77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b
dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3
vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY=
-----END RSA PRIVATE KEY-----

得到了下一关的key,通过SSH方式连入
(重定向保存入文件后,将开头的correct删去,然后连接提示Permissions 0664 for ‘key.private’ are too open.
百度查询得知chmod 600即可ssh -i key.private bandit17@bandit)

Level 17

提示比较old和new两个文件中,不同行的就是password
跟以前同文件去重的思路相同,逐行读取查找,将查找不到的显示即可

bandit17@bandit:~$ cat passwords.new | while read line; do r=$(grep $line passwords.old -c);if(test $r -eq 0)then echo $line; fi; done
kfBf3eYk5BPBRzwjqutbbfE887SVc5Yd
Level 18

提示为被直接log out,密码就在readme中
想着SecreCRT中有没有能直接设置执行命令的,没找到
查了一下可以直接以ssh执行命令

bandit16@bandit:~$ ssh bandit18@bandit cat readme
 _                     _ _ _   
| |__   __ _ _ __   __| (_) |_ 
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_ 
|_.__/ \__,_|_| |_|\__,_|_|\__|

a http://www.overthewire.org wargame.

bandit18@bandit's password: //密码被自动隐藏
IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x//cat得到的readme内容

也可以通过scp命令将文件传到本机来读

Level 19

得到了一个setuid文件,执行后提示id

bandit19@bandit:~$ ./bandit20-do 
Run a command as another user.
  Example: ./bandit20-do id

输入bandit20@localhost也不行,直接输入id发现会自动显示可用id:

bandit19@bandit:~$ ./bandit20-do id
uid=11019(bandit19) gid=11019(bandit19) euid=11020(bandit20) groups=11020(bandit20),11019(bandit19)

则以groups=11020身份登录,得到bandit20的密码:

bandit19@bandit:~$ ./bandit20-do groups=11020 cat /etc/bandit_pass/bandit20
GbKksEFF4yrVs6il55v6gwY5aVje5f0j

原理:密码文件bandit20只有自身和bandi20组的用户才有读权限,而bandit20-do这个文件的owner是bandit20,bandit19有执行权限;另外bandit20-do有s权限,即setuid权限。这个权限可以使得其他用户执行它时将自身的suid改为owner的euid,进而提权读出密码文件。

Level 20

本题给了一个文件,直接运行得到帮助

bandit20@bandit:~$ ./suconnect 
Usage: ./suconnect <portnumber>
This program will connect to the given port on localhost using TCP. If it receives the correct password from the other side, the next password is transmitted back.

也就是说,该文件如果从所给端口收到了当前关卡的密码,那么就会返回下一关的密码
开启一个新的shell即可解决问题

bandit20@bandit:~$ nc -l 12345//在12345端口上开启监听
GbKksEFF4yrVs6il55v6gwY5aVje5f0j//发送当前密码,在缓冲区等待连接

另一个shell运行该文件

bandit20@bandit:~$ ./suconnect 12345//指定12345端口进行连接
Read: GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Password matches, sending next password

在原shell上即接收到了password:gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr

Level 21

cron表示计划执行任务,到提示所说的/etc/cron.d目录中能看到一些配置脚本

bandit21@bandit:/etc/cron.d$ ls
cron-apt  cronjob_bandit22  cronjob_bandit23  cronjob_bandit24  php5
bandit21@bandit:/etc/cron.d$ cat cronjob_bandit22
@reboot bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null
* * * * * bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null
#时间配置分别为分钟、小时、日、月、星期,*表示任意,即每分钟执行一次

查看脚本内容:

bandit21@bandit:/etc/cron.d$ cat /usr/bin/cronjob_bandit22.sh
#!/bin/bash
chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
cat /etc/bandit_pass/bandit22 > /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

读取密码文件重定向写入tmp文件夹下的该文件中,复制下来读取即可

bandit21@bandit:/etc/cron.d$ cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI
Level 22

与上题类似,查看bandit23.sh:

bandit22@bandit:/etc/cron.d$ 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

发现将密码文件写入tmp下,文件名为$myname经md5加密后再cut,同理计算即可

bandit22@bandit:/etc/cron.d$ (echo I am user bandit23)|md5sum|cut -d ' ' -f 1
8ca319486bfbbc3663ea0fbe81326349

bandit22@bandit:/etc/cron.d$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349
jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
Level 23

本题的同理,cron脚本的内容却比较绕:

bandit23@bandit:/home/bandit24$ cat /usr/bin/cronjob_bandit24.sh
#!/bin/bash

myname=$(whoami)

cd /var/spool/$myname
echo "Executing and deleting all scripts in /var/spool/$myname:"
for i in * .*;
do
    if [ "$i" != "." -a "$i" != ".." ];
    then
        echo "Handling $i"
        timeout -s 9 60 ./$i
        rm -f ./$i
    fi
done

遍历/var/spool/bandit24文件夹,执行所有文件后删除
bandit24也在每分钟执行该脚本,因此可以间接控制bandit24的shell
自己写一个脚本放入var/spool/bandit24文件夹下,令其读出password后重定向入可读的文件夹下【并令bandit23也可读】即可
注意写入的文件需要bandit24有可写权限,自己写的脚本需要提供bandit24可执行的权限

bandit23@bandit:~$ touch bandit23.sh
bandit23@bandit:~$ chmod 777 bandit23.sh
bandit23@bandit:~$ vim bandit23.sh
#!/bin/sh
cat /etc/bandit_pass/bandit24 > /home/bandit24/password//读取password并写入自己的文件夹下
chmod 777 /home/bandit24/password//令bandit23也可读

bandit23@bandit:~$ mv bandit23.sh /var/spool/bandit24

等一分钟执行过后去/home/bandit24下cat即可

bandit23@bandit:/home/bandit24$ cat password 
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ
Level 24

本题是爆破,连接30002端口并输入本关密码和四位数字
写一个脚本

#!/bin/bash
for((i=1000;i<9999;i++))
do
echo $i
r=$(echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ "$i | nc localhost 30002|grep -c 'The')
if(test $r -eq 1)then
echo Success
exit
fi
done

速度挺慢的╮(╯_╰)╭让他慢慢爆着吧
爆了快一小时出来了,与攻略上的数字不同,要注意的是原密码与四位数字之间有个空格,刚开始爆的时候没注意提示了长度不对(Failed,而不是Error)白爆了好久~
比较神奇的是与攻略上的数字不对,也就是说这个网站还更新了Pin code……

2477
Success
bandit24@bandit:~$ echo 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 2477'|nc localhost 30002
I am the pincode checker for user bandit25. Please enter the password for user bandit24 and the secret pincode on a single line, separated by a space.
Correct!
The password of user bandit25 is uNG9O58gUE7snukf3bvZ0rxhtnjzSGzG

Exiting.

C. 明日计划
Bandit最后三关

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值