本文最后更新于399 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
有33个flag 通过随意一种语言 与服务器交互获得题目提供的数据 按要求处理提交给服务器 获得flag。
我使用python 处理数据。
第一关
# EN 代号:levelx00 任务:在此任务中,您将收到一个字符串,您应该发送相同的字符串。知识点(与服务器交互)
import socket
host= "temperance.hackmyvm.eu"
port= 9988
level = b'levelx00'
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: #python socket库
s.connect((host,port))
print('----- one accept ') #开场白
data = s.recv(1024)
print(data)
print('----- sed level:',end="") #发送关卡
print(level)
s.send(level)
print('----- accept data') #接收 要处理的数据
data = s.recv(1024)
print(data)
print('------ return data') #返回 处理好的数据
print(data)
s.send(data)
print('----- accept flag') #接收 flag
flag = s.recv(1024)
print('[+]:',end="")
print(flag.decode('utf-8'))
data= data.decode(‘utf-8’) 将字节序列解码为字符串
data= data.encode(‘utf-8’)
第三关 将字符变为大写
#for i in data:
# i = ord(i)
# if(i>=97 and i<=122 ):
# data2 += chr(i-32)
# else:
# data2 += chr(i)
data = data.upper()
第四关 base64 解码
import base64
import socket
host= "temperance.hackmyvm.eu"
port= 9988
level = b'levelx003'
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: #python socket库
s.connect((host,port))
print('----- one accept ') #开场白
data = s.recv(1024)
print(data)
print('----- sed level:',end="") #发送关卡
print(level)
s.send(level)
print('----- accept data') #接收 要处理的数据
data = s.recv(1024)
print(data)
data = base64.b64decode(data) #base64 解码 处理字节流数据
print('------ return data') #返回 处理好的数据
print(data)
s.send(data)
print('----- accept flag') #接收 flag
flag = s.recv(1024)
print('[+]:',end="")
print(flag.decode('utf-8'))
第五关 反向返回一个字符串
data = data[:::-1]
第六关 返回字符串 最后五个字符
data2 = data1[-5:]
第七关 返回字符串的长度 (!int 字符型)
data = data.decode('utf-8')
data1 = len(data)
if data1 >= 10:
a = data1 // 10
b = data1 % 10
data2 = ''
data2 += chr(a+48)
data2 += chr(b+48)
else:
data2 = ''
data1 = data1+48
data2 = chr(data3)
data = data.decode('utf-8')
data1 = len(data)
data = str(data1)
第八关 将十六进制的字符串 转换为 ascii 字符
data = ''.join(chr(int(data[i,i+2],16)) for i in range(0,len(data),2))
第十关 对rot13 编码的字符串 解码
def rot13(text):
"""
ROT13 encryption/decryption.
"""
result = ""
for char in text:
if char.isalpha():
ascii_offset = ord('a') if char.islower() else ord('A')
rot13_char = chr((ord(char) - ascii_offset + 13) % 26 + ascii_offset)
result += rot13_char
else:
result += char
return result
result = ''.join(rot13(i) for i in data1)