CISCN Re 第一题writeup

比赛时没看出来,就去做其他的了~ 参考其他队伍的wp自己整理了一下

CISCN Re 第一题writeup_第1张图片
ida main

看下逻辑,首先判断前缀是CISCN{,长度32
后面以两个_为界把输入分成两部分

CISCN Re 第一题writeup_第2张图片

后面是三个函数,进第一个
里面发现这个

CISCN Re 第一题writeup_第3张图片
1

不清楚,看下一个

CISCN Re 第一题writeup_第4张图片
2

原来是自己和自己异或,

CISCN Re 第一题writeup_第5张图片
cal.png

这就很清楚了,是md5初始化向量

看后面


CISCN Re 第一题writeup_第6张图片
h1.png

函数可逆,也不复杂

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出来

CISCN Re 第一题writeup_第7张图片
11111.png

先拿106c去异或发现文件头像jpg 改为116d异或
成功获得jpg

jpg

组合获得flag

re.png

你可能感兴趣的:(CISCN Re 第一题writeup)