本文主要是介绍[NSSRound#23 misc] 前两题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个周末NSS个人赛是个MISC,这个好久没怎么玩了,结果不会了。只作出一题来,不过参与的人比较少,每题解出数和也不到50。前50吧:)
画师
给了一个xml文件,看内容有 mxGraphModel 标签,应该是某个东西画的矢量图。结果搜了半天也没找着怎么弄。下载的库都过于复杂一时看不懂。结果结束后问群里结果有个在线的。
Flowchart Maker & Online Diagram Software
导进去啥都没有,仔细看下原文发现 strokeColor=#FFFFFF; 和 opacity=0;这应该是说白色全透明。改为黑色不透明。再导入后看不懂,但大概有些意思。明显是反了。
全选-调整图形-垂直 得到可看的:
ez_math
没有附近件,远程连接后,是一个算24的程序。于是从网上搜。这些人写的真烂。找到一个好点的,还有BUG,居然1145,3388不会算。自己写一个吧。
很久不写算法程序了,思路很简单,就是所有4个数字和3个符号的逆波兰式排列(序列由数字和符号组成,符号和前边的符号数(含当前符号)比它前边的数字数少),比如说33+这种排列只有5种。然后计算这个式子,由于有/号所以要小处理一下。
等打出字来,发现并不给flag,flag由前边的True/False组成,显然这题并不用计算,爆破也可以。
还是把费劲写的程序放上吧。
from pwn import *
import itertools def RPN(a):b = []for v in a:if isinstance(v,str):try:b.append(eval(f"{b.pop()} {v} {b.pop()}"))except:return Falseelse:b.append(v)if abs(b[0]-24) <= 0.0000001:#print(a) #8/(3-3/8) [3, 8, '/', 3, '-', 8, '/']return True else:return Falsedef all_way(a):fs = '+-*/'for v in itertools.permutations(a):for f in itertools.product(fs,repeat=3):if RPN([v[0],v[1],f[0],v[2],f[1],v[3],f[2]]): return Trueif RPN([v[0],v[1],f[0],v[2],v[3],f[1],f[2]]): return Trueif RPN([v[0],v[1],v[2],f[0],f[1],v[3],f[2]]): return Trueif RPN([v[0],v[1],v[2],f[0],v[3],f[1],f[2]]): return Trueif RPN([v[0],v[1],v[2],v[3],f[0],f[1],f[2]]): return Trueelse:return False#context.log_level = 'debug'
p = remote('node1.anna.nssctf.cn', 28528)bit = ''
flag = ''
while True:if len(bit) == 8:flag += chr(int(bit,2))print(flag)bit = ''msg = p.recvuntil(b']\n').split(b'\n')[-2]#msg = '[5,2,5,5]'num = eval(msg)r = all_way(num)if r:bit +='0'else:bit +='1'p.sendlineafter(b': ', str(r).encode())#NSSCTF{04e60768-66bf-412e-bec0-b8ef241acb1d}
后边两题连附件都没下,可能是卡点的时候有人交了,一共3个,这种就太难了我肯定不会。回头看谁有附件和WP再复现吧。
这篇关于[NSSRound#23 misc] 前两题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!