CISCN Re 第一题writeup
2018-05-10 本文已影响9人
SueLyon
比赛时没看出来,就去做其他的了~ 参考其他队伍的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
