XCTF-elrond32

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) % 11
    print(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弟弟的做题笔记,有时可能会带点稀奇古怪的思路,如有问题还望师傅们指正,专栏内容会随着比赛记录而不断更新哦。爬~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值