BUUCTF逆向wp [WUSTCTF2020]level3

第一步  查壳,本题是64位。

第二步   进主函数,按tab。

点开base64_table,发现标准base64编码表

Main函数里面的那个是编码的文本,本题并不是基于标准base64字符映射的,如下面,跟进这个函数,发现它对base64做了修改,修改后的便是本题字符映射的字符串表。

这是对一个名为base64_table的数组(就是上面提到的那个标准的base64表)进行操作的代码段。base64_table是一个包含至少20个元素的数组,通常用于Base64编码中,它包含64个字符的索引表。这段代码的目的是将数组的前10个元素与后10个元素的位置进行交换。

详细分析:

  1. 循环的初始化:i = 0,这意味着循环将从数组的第一个元素开始。
  2. 循环的条件:i <= 9,这表明循环将执行10次,当i从0增加到9。
  3. 循环体内的操作:
    • v1 = base64_table[i];:将当前索引i处的数组元素赋值给变量v1。这是保存将要交换的元素值的操作。
    • base64_table[i] = base64_table[19 - i];:将索引19 - i处的元素值赋值给索引i处的位置。这是实际进行交换的操作,它将数组前半部分的元素与后半部分的元素进行交换。
    • result = 19 - i;:计算并保存索引19 - i的值到变量result中。这个操作其实是不必要的,因为result的值可以直接在下一行中使用。
    • base64_table[result] = v1;:将之前保存的v1(即原始的base64_table[i])赋值给索引19 - i处的位置,完成交换。
  4. 循环的迭代:每次循环结束时,i的值增加1。

具体来说,这个循环的每次迭代会做以下交换:

  • 当i = 0时,交换base64_table[0]和base64_table[19]
  • 当i = 1时,交换base64_table[1]和base64_table[18]
  • 当i = 9时,交换base64_table[9]和base64_table[10]

在循环结束后,base64_table数组的前10个元素和后10个元素的位置已经被交换。

第三步   编写脚本

得到修改后的用于本题的映射base64表

进入这个网站:在线自定义base64编解码、在线二进制转可打印字符、在线base2、base4、base8、base16、base32、base64--查错网 (chacuo.net)

  Flag{Base64_is_the_start_of_reverse}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无 双

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值