前言
今天跟大佬们在做EIS 2017运维挑战赛,我看的时候大佬们已经把web做的差不多了。所以我就来解决两道MISC。
RC4
第一个是rc4的一个解密,挺简单的,手撸一个解密代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
def rc4(data,key): j=0 s=range(256) for i in range(256): j=(j+s[i]+ord(key[i%len(key)]))%256 s[i],s[j]=s[j],s[i] i=0 j=0 out=[] for char in data: i=(i+1)%256 j=(j+s[i])%256 s[i],s[j]=s[j],s[i] out.append(chr(ord(char)^s[(s[i]+s[j])%256])) return ''.join(out) encodedata=rc4('\xCA\xEE\x86\x30\x48\xC4\xEC\x56\x3D\x22\x2A\xBC\x9A\x95\x70\x23\x39\x76\x3B\xEE\x09\x29\x2B\x01\x54\x00\x87\x5E\x37\x23\x3E\x79\x8B\x7B\xA9\x20\x78','hello world') print encodedata
|
DNS 101
这个题我是懵逼了一上午,dig了一早上TXT没想到玄机在与NSEC(DNSSEC 的一部分 — 用来验证一个未存在的服务器,使用与 NXT(已过时)记录的格式)。还有一点就是dig any的用法,这个当时也是没有考虑到。(多谢rebirth的指点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import re import subprocess
target = 'what.is.my.flag.src.edu-info.edu.cn'
while 1: output = subprocess.Popen(['dig any'+' '+target],stdout=subprocess.PIPE,shell=True).communicate()
result = re.findall(".*NSEC(.*). TXT.*",output[0])
print result[0].strip()
target = result[0].strip()
flag = subprocess.Popen(['dig'+' '+target+' '+'TXT'],stdout=subprocess.PIPE,shell=True).communicate() if 'EIS' in flag[0]: print flag[0] break
|
最终结果: