[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}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章