比赛时没看出来,就去做其他的了~ 参考其他队伍的wp自己整理了一下
看下逻辑,首先判断前缀是CISCN{
,长度32
后面以两个_
为界把输入分成两部分
后面是三个函数,进第一个
里面发现这个
不清楚,看下一个
原来是自己和自己异或,
这就很清楚了,是md5初始化向量
看后面
函数可逆,也不复杂
cipher1 = "10233622J984933H678N95F769010595"
get1=[]
for i in xrange(len(cipher1)):
if ord(cipher1[i])<=0x39:
get1.append(cipher1[i])
else:
get1.append(chr(ord(cipher1[i])-i%10))
cipher2 =''.join(get1)
print cipher2
#jimy
得到32位md5,可查
第二个函数类似,只是多了个xor
直接拿上面结果
a=0xC9CA0A6BF5534F142F29B64542099CF1 ^ 0x10233622B984933C678E95D769010595
print hex(a)
#ct6y
md5同样可查
第三个函数也类似,但是md5不可查
后面发现在写文件,dump出来
先拿106c去异或发现文件头像jpg 改为116d异或
成功获得jpg
组合获得flag