#【2019看雪CTF】Q3赛季 第五题:魅影舞姬 WP
程序开始先check了输入sn第一字节,使用算法有tea和md5。这个用意不明。(让人多花点时间?)
然后将输入sn的前36字节进行base64解码,再进行以6、6、6、8字节长度进行分组,记为deb。
接着以sn的前24字节为key,对deb[3]进行3des解密并替换。
再对解密后的deb进行check,check函数为sub_403832,其中共进行4次校验,成功次数记录在全局变量中,地址0x4AC048。
最后进行sn的md5 hash校验和0x4AC048处全局变量的校验。到这里,基本可以确定输入长度为36字节,最后的md5 hash校验是为了保证不多解,即36字节后没有输入数据。
函数sub_403832里的校验其实就是走迷宫,对deb的里的4组数据进行校验,以2个bit位的0-3表示上下左右。迷宫及走法如下:
w s a d 0 1 2 3 00 01 10 11 group1 ************* *@*********** *-*********** *--**----**** *-***-**-**** *-***#**-**** *--*****-**** **-*****-**** **-------**** **-*-----**** **---**-***** **-****--**** ************* sssssdssddddddwwwwwaaass group2 ************* *@*********** *-*********** *-***-**-**** *--**----**** *-***#**-**** *--*****-**** **-*****-**** **-*-----**** **---**-***** **-------**** **-****--**** ************* sssssdsssddwddddwwwwaaas group3 ************* *@*********** *-*********** *-***-**-**** *--*****-**** *-***#**-**** *--**----**** **-*****-**** **-****--**** **---**-***** **-*-----**** **-------**** ************* sssssdsssddsdddwwdwwaaaw group4 ************* **-------**** *--*****-**** *-***-**-**** *--*****-**** *-***#**-**** *-***-**-**** *-***-**-**** *--**----**** **---**-***** *--*****-**** *@*********** ************* wdwwawwwwwwdwddddddsssssssaaawww
走法转换成输入的hex值:
def trans(s): t = {'w':'00','s':'01','a':'10','d':'11'} out = '' for i in s: out += t[i] out = hex(int(out,2))[2:].replace('L','').decode('hex') return out def main(): a = trans('sssssdssddddddwwwwwaaass') print a.encode('hex') a = trans('sssssdsssddwddddwwwwaaas') print a.encode('hex') a = trans('sssssdsssddsdddwwdwwaaaw') print a.encode('hex') a = trans('wdwwawwwwwwdwddddddsssssssaaawww') print a.encode('hex') print 'end.' if __name__ == '__main__': main()
得到5575fff002a555757cff00a955757dfc30a83080033ffd555a80'5575fff002a555757cff00a955757dfc30a8'.decode('hex').encode('base64')
就得到前24字节的sn。
到目前得到了3des的key和明文,加密再base64编码即得到输入的后12字节:geWKJMtrmeY=
。
所以flag为:VXX/8AKlVXV8/wCpVXV9/DCogeWKJMtrmeY=
。
[培训]《安卓高级研修班》彻底搞定函数抽取型壳!现在报名得源码和安卓8.1脱壳机!10月20日深圳专场不见不散!
最后于 13小时前 被poyoten编辑 ,原因: