XCTF-elrond32
- 1、查壳
- 2、ida静态分析
- 提取密文获得flag
1、查壳
无壳,32位ELF文件
2、ida静态分析
主要由两个函数组成,sub_8048414用来验证key,sub_8048538函数用来进行与key的的异或加密。
sub_8048141函数:
一开始传入一个二维数组的行指针和0,里面直接进行一个switch和case的判断,由0进入则可以知道*a1==105即key的第一个元素的ASCII码为105,之后跳转到label19处,传入a1+1和一个生产关键码的运算。
a2=0
for i in range(7):a2 = 7 * (a2 + 1) % 11print(a2,end=' ')
#最终遍历顺序为0 7 1 3 6 5 9 4
print()
key=[105,115,101,110,103,97,114,100]
根据这个生产关键码的算法依次得到key的每个元素。
提取密文获得flag
sub_8048538函数
主要内容是将unk_8048760字符串的值存到v2里,依次与key异或。可知密文字符串每个元素为字符型,占一个字节,而v2开辟的是int型的数组,所以其中3个字节会用0来填充,写脚本提出就好。
key=[105,115,101,110,103,97,114,100]
str=[15, 0, 0, 0, 31, 0, 0, 0, 4, 0,0, 0, 9, 0, 0, 0, 28, 0, 0, 0,18, 0, 0, 0, 66, 0, 0, 0, 9, 0,0, 0, 12, 0, 0, 0, 68, 0, 0, 0,13, 0, 0, 0, 7, 0, 0, 0, 9, 0,0, 0, 6, 0, 0, 0, 45, 0, 0, 0,55, 0, 0, 0, 89, 0, 0, 0, 30, 0,0, 0, 0, 0, 0, 0, 89, 0, 0, 0,15, 0, 0, 0, 8, 0, 0, 0, 28, 0,0, 0, 35, 0, 0, 0, 54, 0, 0, 0,7, 0, 0, 0, 85, 0, 0, 0, 2, 0,0, 0, 12, 0, 0, 0, 8, 0, 0, 0,65, 0, 0, 0, 10, 0, 0, 0, 20, 0,0, 0]
c=[]
for i in range(len(str)//4):c.append(str[4*i])
for i in range(len(c)):print(chr(c[i]^key[i%8]),end='')
#flag{s0me7hing_S0me7hinG_t0lki3n}
完结线:re弟弟的做题笔记,有时可能会带点稀奇古怪的思路,如有问题还望师傅们指正,专栏内容会随着比赛记录而不断更新哦。爬~