比賽時(shí)沒看出來,就去做其他的了~ 參考其他隊(duì)伍的wp自己整理了一下

ida main
看下邏輯,首先判斷前綴是CISCN{,長(zhǎng)度32
后面以兩個(gè)_為界把輸入分成兩部分

后面是三個(gè)函數(shù),進(jìn)第一個(gè)
里面發(fā)現(xiàn)這個(gè)

1
不清楚,看下一個(gè)

2
原來是自己和自己異或,

cal.png
這就很清楚了,是md5初始化向量
看后面

h1.png
函數(shù)可逆,也不復(fù)雜
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,可查
第二個(gè)函數(shù)類似,只是多了個(gè)xor
直接拿上面結(jié)果
a=0xC9CA0A6BF5534F142F29B64542099CF1 ^ 0x10233622B984933C678E95D769010595
print hex(a)
#ct6y
md5同樣可查
第三個(gè)函數(shù)也類似,但是md5不可查
后面發(fā)現(xiàn)在寫文件,dump出來

11111.png
先拿106c去異或發(fā)現(xiàn)文件頭像jpg 改為116d異或
成功獲得jpg

jpg
組合獲得flag

re.png