[RE]ACTF新生赛_2020_rome

ACTF新生赛_2020_rome

1.PEiD查看文件信息

image-20221125153859446

发现没有壳,且为32位文件

2.IDA分析

image-20221125154612263

输入的字符串要按照"ACTF{}" 的格式,

image-20221125154742321

因为 v10 v11 v12 v13 都是 int 类型的变量,所以{}内的字符应该有 4*4=16 位

第一个 for 循环是对大写字母和小写字母进行不同的处理

第二个 for 循环是对处理后的字符串和 v15 进行比较,若相同,则成功

v15: “Qsw3sj_lz4_Ujw@l”

3.编写脚本

第一种:暴力枚举

v15 =  "Qsw3sj_lz4_Ujw@l"
flag = ""
for i in range(0,16):
    for j in range(0,127):# ASCII
        x = j
        if j > 64 and j <= 90:
            j = (j  - 51) % 26 + 65
        if j > 96 and j <= 122:
            j = (j  - 79) % 26 + 97
        if chr(j) == v15[i]:
            flag += chr(x)
print(flag)

第二种:程序逆向

v12 ="Qsw3sj_lz4_Ujw@l"
v1 =list(v12)
for i in range(16):
    if ord(v1[i])>64 and ord(v1[i])<=90:       
        v1[i]=chr(ord(v1[i])-65+51) if (ord(v1[i])-65+51)>64 else chr(ord(v1[i])-65+26+51)
    if ord(v1[i])>96 and ord(v1[i])<=122:       
        v1[i]=chr(ord(v1[i])-97+79) if (ord(v1[i])-97+79)>96 else chr(ord(v1[i])-97+26+79)
print("".join(v1))

成功得到flag

flag:Cae3ar_th4_Gre@t

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值