前言
首先各位师傅们节日快乐。
很高兴能参与到这次活动中。
随便说一下题目的初衷吧。这次题目重点放在了题目的趣味性,也是曾经在某次比赛上受到的启发。个人觉得作为一个二进制选手,调试能力和猜解能力算是基本功了。也可能题目过于CTF化,导致很多师傅对着没有附件只有一行nc的逆向题无从下手。
可能有些师傅是在题目给出hint之后爆破得到flag,但我觉得大可不必。
题目
题目环境是docker + xinetd,限制了IP的最大链接数为10.
已经有师傅写过题目分析了,这里就再多啰嗦一句。
a = raw_input()
result = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
check = [-56, -50, -118, -105, -98, -101, -117, -105, -96, -42, -80, 89, 78, 70, 177, 86, 126, 80, 80, 96, 177, 109, 28]
arr1 = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83]
for i in range(0,23):
if i <= 10:
result[i] = ~ord(a[i])
result[i] = result[i] ^ arr1[i]
else:
result[i] = ord(a[i]) + arr1[i]
result[i] = result[i] ^ 0xcc
if result[i] != check[i]:
print "Wrong Flag!"
exit(0)
print "Yes, You got it!"
print result
这样对照着给出的题目文件思路就清晰的多。
最后
也有人问过,题目的意义在哪里。其实很简单,我只是想带大家回到最开始的调试和猜解。
都怪这该死服务器,拖慢了大家的解题进度。
如果有问题欢迎大家指正。
总之,出题人立正挨打!