ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

攻防世界-IgniteMe - xxx

攻防世界-IgniteMe - xxx

先查壳,发现没加壳,拖入ida-32

屏幕截图 2025-09-17 220007

反汇编了得到主函数
粗略看一下,能得到的信息有
输入的字符串长度为29,前四个字符是EIS{,最后一个字符是}

图片

想要输出Congratulations!关键的函数就是这个 4011C0函数,我们点进去看一下

图片

图片
函数逻辑很明显,for循环之前就是把之前输入的字符串str除去开头四个字符和最后一个字符的剩下字符存在v7数组里面
图片

for循环不要被他这个v2变量影响了,其实就是把大写字符转为小写字符,小写字符转为大写字符,其他字符不变,当然不要忘了填入str2数组的代码
byte_4420B0数组:
byte_4420B0 = [
** 0x0D, 0x13, 0x17, 0x11, 0x02, 0x01, 0x20, 0x1D,**
** 0x0C, 0x02, 0x19, 0x2F, 0x17, 0x2B, 0x24, 0x1F,**
** 0x1E, 0x16, 0x09, 0x0F, 0x15, 0x27, 0x13, 0x26,**
** 0x0A, 0x2F, 0x1E, 0x1A, 0x2D, 0x0C, 0x22, 0x04**
]

函数 4013C0
图片

最后就是把str2和字符串GONDPHyGjPEKruv{{pj]X@rF比较,那么接下来就可以写脚本了

str = "GONDPHyGjPEKruv{{pj]X@rF"
byte_4420B0 = [0x0D, 0x13, 0x17, 0x11, 0x02, 0x01, 0x20, 0x1D,0x0C, 0x02, 0x19, 0x2F, 0x17, 0x2B, 0x24, 0x1F,0x1E, 0x16, 0x09, 0x0F, 0x15, 0x27, 0x13, 0x26,0x0A, 0x2F, 0x1E, 0x1A, 0x2D, 0x0C, 0x22, 0x04
]
flag = ''
v2 = 0
for i in range(0,len(str)):num = ord(str[i]) ^ byte_4420B0[i]num = (num-72) ^ 0x55if num>=97 and num<=122:flag += chr(num-32)elif num>=65 and num<=91:flag += chr(num+32)else:flag += chr(num)
print(flag)

flag{wadx_tdgk_aihc_ihkn_pjlm}

返回列表