Loading

攻防世界-难度1- toddler_regs

攻防世界-难度1
toddler_regs.zip

运行

image.png

ida静态分析

shift+f12搜索字符串
image.png

image.png
点过去F5
image.png
先搞定g_team_idx,一路跟过去F5

g_team_idx = 23;

image.png

还需要两个数组内容:team[]和teamjnu[],点过去就行了。
image.png
image.png
只需要提取其中的内容就行了。注意字符串末尾是'\0',编写脚本时要注意这点

team = """
    ……
    .data:000000014001E000 team            db 'X', 'P', '0', 'I', 'N', 'T', 0, 'X', 'P', '0', 'I'
    ……

"""

teamjnu = """
    ……
    .data:000000014001E1C0 teamjnu         db 'X', 'P', '0', 'I', 'N', 'T', 'J', 'N', 'U', 0, 'X'
    ……
"""

def get_res(list, m, n):
    result = []
    for i in range(0,m):
        result.append([])
        for j in range(0,n-1):  #数组从0开始,并且要去除'\0'
            pointer = i*(n-1)+j
            result[i].append(list[pointer])
    return result

if __name__ == '__main__':
    #(.*?):匹配任何字符(.),任意次数(*),尽可能少地匹配(?),这确保了匹配在遇到第一个闭合单引号时停止
    team = re.findall(r"'(.*?)'", team)  #r表示原始字符串,不处理转义
    teamjnu = re.findall(r"'(.*?)'", teamjnu)  #r表示原始字符串,不处理转义

    team_res = get_res(team,64,7)
    teamjnu_res = get_res(teamjnu,512,10)
    print(''.join(team_res[23]))
    print(''.join(teamjnu_res[184]))


image.png
最后拼接上面的字符串

flag{Xp0int_1s_n1c3_but_Xp0intJNU_is_we1rd}

x64dbg动态分析

搜索程序模块字符串
image.png

posted @ 2024-04-26 14:15  _rainyday  阅读(270)  评论(0)    收藏  举报