[SWPUCTF 2021 新生赛]easyapp

发布时间 2023-05-09 22:43:21作者: TFOREVERY

查壳:

发现里边有个压缩包,弄出来看看:

再查壳看看:

啥也不是,把它扔进IDA:

没有伪代码,一个字‘找’,关键点(是否IDA能成功反编译,还是说用了java的反编译才行,是否有flag或者CTF之类的字样):

发现特殊字样,跟进:

大写String?大胆点进jadx:

成功,告诉我们什么?要大胆点,不然会浪费很多的时间:找我们的NSSCTF吧:

发现一个异或,先记下,继续

找到特殊字样的根源地,而且下面还有yes字样,证明这里是最终的判断:

分析程序能知道是将flag与key异或得到这特殊字样,那么我们反异或不就得到flag?

上脚本:

会给你报个越界的错误,那么怎么改呢?由于ASCII有效位最大位127,那么我们只用%128就好了

Des = '棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌'
key = 123456789
flag = ''
for i in Des:
    flag += chr((ord(i) ^ key) % 128)
print(flag)

得到‘jwwgpb_ETO}}`wY’???说明啥,key不对,我们再找找,看看有没有人调用改变key的值:

在这发现有改变了key的值,最终的脚本如下:

Des = '棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌'
key = 987654321
flag = ''
for i in Des:
    flag += chr((ord(i) ^ key) % 128)
print(flag)

得到NSSCTF{apkYYDS}