(第一次接触到需要nc连接的杂项题)
没有nc的需要先安装(Linux在终端输入apt install netcat)
安装完成后,直接nc xxxxxx xxxx
输入r/b猜测红蓝队的胜利,连续猜对66次就可以得到flag
如果错了就要重新猜(答案顺序不变),但是90秒后会自动断开连接,重新连接后答案顺序会改变,所以要人力无法完成的,要用脚本在90秒内跑出来,脚本如下:
from pwn import * #需要用到pwntools模块
context.log_level = 'debug'
io = remote('node4.buuoj.cn', 25900) #连接,相当于nc,注:25900是端口,每一次开靶机基本上都不同
payload = ['r'] * 66 #先把答案设置成66个‘r’
restart = 1
while restart:
restart = 0 #先把restart改为0,避免死循环
for i in range(66): #循环发送答案
io.recvuntil('choose one [r] Red Team,[b] Blue Team:') #接收函数,一直接收,直到接收到设定的字符串才进行下一语句
io.sendline(payload[i]) #发送函数,上传第i个答案
io.recvuntil('Team')
io.recvuntil("Team\n") #因为输入一个答案后会有两个'Team'的字符串,所以接收两个‘Team'后进行下一语句
p = io.recv(10) #接收函数,可控制接收的字符数量,这里接收10个字符
if 'The number' in p:
continue #接收到'The number'则说明这个答案对了,继续进行下一个for语句发送下一个答案
else:
io.recvuntil('Play again? (y/n): ') #如果没有接收到'The number',则第i个答案错误,接收完字符
payload[i] = 'b' #将第i个答案改正
io.sendline('y') #发送‘y’重新游戏
restart = 1 #将restart改为1,将会重新while循环
break
io.interactive()
该脚本需要用到Python的pwntools模块,安装方法:
pip install pwntools
结果:
flag:
flag{9f42b688-4127-4558-a7d0-776a14997d17}