3.26周赛
xor
题目给了两个文件,flag,key,并且题目提示xor异或。
第一次写异或题,就想直接将flag与key进行异或,将flag转二进制与key转二进制进行异或,然后发现是错误的,然后看完wp发现还需要将flag二进制按位取反后再与key二进制异或,于是就将flag转二进制得到flag
在按位取反的时候我第一次还忘记将转出来的二进制中间的空格删掉,然后我又做了一次
将flag二进制得到的数按位取反得到
这是flag二进制和按位取反得到的二进制,然后将key转二进制得到然后进行异或运算
最后转为ascii码,得到flag
还有脚本如下:
key = 'jaks{qwertyui-opas-dfgh-jklz-xcvbnmqwertu}'
flag = 'óòõëÿ¾»®¿íâë÷ÿñëîÿ¨ û ÿ¤¥±ÿ¿ú½®÷öﺮº²¼ÿ'
data = [0xff ^ ord(i) for i in flag]
for i in range(len(data)):
print(chr(ord(key[i])^data[i]),end='')
re1
直接将文件拖入ida中,找到主函数,F5反编译
然后打开&strs
得到flag
re2
将文件拖到pe中发现有壳,upx的壳
然后将文件脱壳
将文件脱完壳后打开,找到主函数,F5进行反编译
打开_data_start_
分析代码,将v4的字符值转为ascii码作为下标,并且需要将下标减去1,然后在_data_start_中找出来,脚本如下:(脚本中的字符 ’ 要写成 \’)
运行得到flag
base?
首先尝试了一下打开文件,发现打不开,然后尝试改了一下后缀,改成txt后打开
这是第一次遇见base换表,就是将base表中的内容改写成上面的Encoding table中的内容,从网上找到脚本
运行后就可以得到flag
babyrsa
文件中给我们了p,q,dp,dq,c
需要解密m
然后上网找到脚本
这里我第一次写的时候还遇到了一个问题,就是文件中dp和dq换了位置,自己没有看见,然后运行之后错误,后面发现错误
最后运行得到flag
来玩贪吃蛇啊
这题需要使用CE
首先打开文件得知,你需要得到60分就能得到flag,然后将文件拖入ida中找到主函数反编译F5之后找到
打开箭头所指的函数
分析得到初始长度是4,最后的分数要达到64分就可以得到flag 。
进入CE
第一次扫描数值4,然后吃一个再次扫描5
找到地址后,将分数数值改成大于64的数值即可
然后flag也会自己出来