攻防世界-难度1
toddler_regs.zip
运行
ida静态分析
shift+f12搜索字符串
点过去F5
先搞定g_team_idx,一路跟过去F5
g_team_idx = 23;
还需要两个数组内容:team[]和teamjnu[],点过去就行了。
只需要提取其中的内容就行了。注意字符串末尾是'\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]))
最后拼接上面的字符串
flag{Xp0int_1s_n1c3_but_Xp0intJNU_is_we1rd}
x64dbg动态分析
搜索程序模块字符串