A-Maze-In
一道比较新颖的 maze 题吧,
地图长度是 256 = 32 * 8 ?
不知道了 0.0
难崩,看了一下 wp 说map长度什么的都有,应该就是 16 * 16的
看了一圈,感觉还是要把 DFS,BFS 算法学一下,直接跑脚本算了。
首先,要有递归限制
回溯操作
递归深度优先搜索(DFS)的方式解决了迷宫问题,找到了一条从起点到出口的路径,并将路径输出为字符串
import syssys.setrecursionlimit(100000) # 递归限制
mkey = [0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00,0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,0x01, 0x00, 0x01, 0x00
]
road = [] #存储当前探索的路径
flag = 0def smaze(row, col, n):global flagglobal roadif row == 7 and col == 4:flag = 1if flag == 1:if len(road)==34:print("".join(road))return 1# check 当前四个方向是否可以移动,并且不是上一步移动的方向?# 可以移动,就将移动方向加入 road 继续递归#检查当前移动的方向是否与上一步相同if mkey[32 * row + col * 4 + 0] == 1 and n != 'D':if row > 0: # up(U)road.append('U')smaze(row - 1, col, 'U')if mkey[32 * row + col * 4 + 1] == 1 and n != 'U':if row < 7: # down(D)road.append('D')smaze(row + 1, col, 'D')if mkey[32 * row + col * 4 + 2] == 1 and n != 'R':if col > 0: # left(L)road.append('L')smaze(row, col-1, 'L')if mkey[32 * row + col * 4 + 3] == 1 and n != 'L':if col < 7: # right(R)road.append('R')smaze(row, col+1, 'R')if len(road) != 0:road.pop()#print(road)if __name__ == '__main__':smaze(0,3,'0')# LLDRRDLLLDRDLDDDRRULURRULURRDDDLDR
Matara Okina
输入 flag 都隐藏了,
jadx 分析了一下,解出来
enc="@lgvjocWzihodmXov[EWO"
l=len(enc)
data=list(map(ord,enc))
print(l)
i=0
while (i<(l+1)/2):i2=i+1data[i]^=i2tmp=l-1-idata[tmp]^=i2i=i2
print(data)
for i in range(len(data)):print(chr(data[i]),end='')
#Android_scheme_is_FUN
提交不对,看wp 还差一段,还有提示 where do you input flag应该有什么隐藏东西
又遇到一个新东西
得到的只是secret部分,需提交data,
注意到paramBundle=getIntent().getData()且paramBundle具有getScheme()和getHost()方法,了解知为Android业务组件URL Scheme,到AndroidManifest.xml中查看,发现
<data android:host=“p4th” android:path="/70/1nput android:scheme=“sh0w”>
Android_Scheme
来跳转 app 的各个页面
然后来构造 html
<a href=“sh0w://p4th/70/1nput?secret=Android_scheme_is_FUN”>打开APP</a>
得到 flag 。
UnrealFlag
先查查 pak 文件是啥
.pak is what
就一个,在"D:\ctf附件2\UnrealFlag\UnrealFlag\FindFlag\Content\Paks\FindFlag-WindowsNoEditor.pak"
找到一个工具,但还需要密钥,输入对应的 AES 密钥的 Base64 格式后即可打开 Pak 文件
有一个工具不行,之后闲了再搞
anniu
这之前好像遇到过,应该要用 RH
但没遇到 按钮 的位置
要找到句柄,修改按钮控件属性,之前也有一个工具来着(xspy)
但没在 RH 中找到
不能修改啊
先用灰色按钮工具改一下,得到 flag
warmup
这个像凯撒
与之前那个函数操作同一个数组
有点迷
提取出数独
额,不太会!
大佬最后的处理很好
其实应该也是可以写一个脚本
最后游戏结果还须处理:
才得到flag。
e
这个需要用 gdb 慢慢调试。
调用so的RunPrg函数好像
最后一个函数也是很长,不知道对dword几个变量搞啥子呢
要用到 pwndbg 还没弄好,先放放。
都是一些很新的东西
UE4,schmam
wp