网安周报 WEEK1 第一次校赛re复现
welcome.exe
程序拖入die中查看架构发现是64位 无壳程序

程序拖入64位IDA中直接发现假flag

再次查看decrypt_flag(); 查看反编译代码发现正确flag

QLNUCTF{We1come_to_Re_184}
2.exe
查看程序架构,发现是64位无壳程序

把程序拖入64位IDA中,主函数下图可见

得到 base64_cipher = “UUxOVUNURntFYXN5eXl5eXlfUkM0XzByX0Jhc2U2NF9EZWNvZGVkfQ==”;
可以得知base64加密后呈现的,找的在线解密工具即可得出flag

maze.exe
打开程序发现是一个走迷宫游戏

1.通关游戏
#代表起点 @代表终点

得到flag为QLNUCTF{dssddssdssdddwwdddsdsdsd}
2.进入IDA64
查看反编译代码,写出走迷宫的py脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| from collections import deque maze_rows = [ "1111111111111111", "1#01000100000011", "1101110101101011", "1100010001001011", "1111011101100011", "1100000100001111", "1111101101100111", "1100000000010011", "11000000001010@1", "1111111111111111", ]
grid = [list(row) for row in maze_rows]
START = (1, 1) END = (8, 14) MAX_STEPS = 24 ROWS, COLS = 10, 16
DIRS = { 'w': (-1, 0), 's': (1, 0), 'a': (0, -1), 'd': (0, 1) }
def dfs(r, c, steps, path): if steps > MAX_STEPS: return None if (r, c) == END and steps == MAX_STEPS: return path if (r, c) == END: return None for move, (dr, dc) in DIRS.items(): nr, nc = r + dr, c + dc if not (0 <= nr < ROWS and 0 <= nc < COLS): continue if grid[nr][nc] == '1': continue res = dfs(nr, nc, steps + 1, path + move) if res is not None: return res return None
print("[*] Searching for path...") solution = dfs(START[0], START[1], 0, "")
if solution: print(f"[+] Found path: {solution}") print(f"[+] Length: {len(solution)}") print(f"\n🏁 FLAG: QLNUCTF{{{solution}}}") else: print("[-] No valid path found.")
|
运行后得到flag
