HUBUCTF 2022 新生赛]simple_RE已解

换表base64

str1 = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8=="   #str1是要解密的代码
string1 = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD"   #string1是改过之后的base64表
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))

[NISACTF 2022]string

关键在这,srand(seed)

srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int v4;
    int seed = 0x2766;
    srand(seed);
    for ( int m = 0; m < 13; ++m )
  {
    v4 = rand();
    printf("%d", (unsigned int)(v4 % 8 + 1));
  }
}

加上NSSCTF

[SWPUCTF 2021 新生赛]re2

s2 = 'ylqq]aycqyp{'
    flag = ''
    for i in range(len(s2)):
for j in range(256):
if (j <= 96 or j > 98) and (j <= 64 or j > 66):
k = j
            j = j - 2
    else:
k = j
            j += 24
    if j == ord(s2[i]):
flag += chr(k)
    print(flag)

直接暴力破解

注意如果是a,则会进入else,即ord(a) + 24 --> 121 --> y { 经过运算后是一样的结果

所以我的脚本会将a和{一起输出

a{nss_ca{esa{r}

这里可以猜测i一下边上的是俩括号 中间的是a

正确为{nss_caesar}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值