Vortex Wargame
Vortex wargame:http://overthewire.org/wargames/vortex/
Overthewire社区提供了一系列帮助学习计算机安全领域的wargame,Vortex Wargame主要是关于Software Security的,有一定的难度,共有27个level。
Level 0 -> Level 1
本级的目标是从vortex.labs.overthewire.org的5842端口读取四个无符号整数,将它们加起来,发送回去,就可以得到下一关的用户名和密码。
需要注意的是,服务器机器是32位的小端序机器。
import socket
s = socket.socket()
s.connect(("vortex.labs.overthewire.org", 5842))
# 读取16个字节,4个32位无符号整数
result = s.recv(16)
pwd = 0
for i in range(0, 15, 4):
# 读取每一个整数
b_array = result[i:i+4]
num = 0
for j in range(0, 4):
b = b_array[j]
# 小端序的字节转换成整数
b = b << (j * 8)
num = num | b
pwd += num
# 最终结果可能溢出32位,做与操作将结果限制在32位以内
pwd = pwd & 0x0FFFFFFFF
# 发送结果
s.send(pwd.to_bytes(4, byteorder="little", signed=False))
# 最后可以收到下一关的用户名和密码
print(s.recv(1024))
s.close()