[61dctf] stheasy

题目下载:ctf2.b93676be23733b2fcda3988c1133c1c1

解题思路:

是个 Linux 下的 ELF 文件,拖到 IDA 中分析,定位 main 函数,F5 看代码。

逻辑很简单,先输入 flag,然后重点在 if 语句的判断,也就是 sub_8048630 函数是对 flag 进行检查,双击进去。

s 就是输入的 flagv1 显然是 flag 的长度,首先 v1 要等于 29,可以确定 flag 长度是29,为了清晰点,先修改一下变量名。

可以确定 flag 要满足的逻辑:flag[i] == A[ B[i] / 3 - 2 ]。其中,A、B数组在下图

用 python 脚本跑出 flag。此处要注意,A 数组的第一个字节 0x6C 和 B 数组的 0x48 要包含进来。

#coding:utf8
A = 'lk2j9Gh}AgfY4ds-a6QW1#k5ER_T[cvLbV7nOm3ZeX{CMt8SZo]U'
B = [0x48, 0x5d, 0x8d, 0x24, 0x84, 0x27, 0x99, 0x9F, 0x54, 0x18, 0x1E, 0x69, 0x7E, 0x33, 0x15, 0x72, 0x8D, 0x33, 0x24, 0x63, 0x21, 0x54, 0x0C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x1B]


flag = ''

for i in range(len(B)):
    flag += A[B[i]/3 - 2]

print flag
# kctf{YoU_hAVe-GOt-fLg_233333}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值