这个polar的re感觉质量好低,不是太简单就是太恶心,写了5道不想写了QAQ
test
用apktool解包,在assets文件中把zip文件名改成png得到flag
这题被坑了一个晚上,因为一开始尝试静态分析一关一关过,结果解包之后flag在图片里面,之后看到这种可以逆出资源的可以先尝试把资源找出来,说不定就是flag,建议把这道题放到misc
老八小冒险
这个题挺简单的,甚至都是原始工程文件,没有打包也不用解包
直接用rpgmaker vx ace打开,直接看事件就好了
jbkjckjsdsfdsfjbkjckj的md5
1
| flag{60b6cd0848639100c68c04d4884db1e8}
|
逢七必变
第一次见到aspack壳,尝试搜索工具脱壳,找到了,那么就直接使用,结果工具有问题,看来还是要一步一步调
打开之后,里面的代码好像很奇怪,代码看不懂,一开始call然后又返回,不理解,esp定律一开始也不好使/
好吧,因为这个特征不一样,这个aspack壳的特点是一开始popad,然后call,最后popad,然后ret,在popad完对esp下断点然后点击运行,可以直接到ret的位置,之后f7一下,应该可以到一个call加jmp的位置,这里就是oep
在这个位置dump,然后打开dump的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int __cdecl main(int argc, const char **argv, const char **envp) { signed int len; signed int i; char v6[256];
strcpy(v6, "akf`|7fda1005c?1b253bc17346b5c77bab?0z"); memset(&v6[39], 0, 0xD9u); len = strlen(v6); for ( i = 0; i < len; ++i ) v6[i] ^= 7u; sub_5F1040("You got it!!!"); return 0; }
|
然后有手就行了
1
| flag{0acf6772d86e524ed60431e2d00efe87}
|
高卢战记
直接ida打开obj文件,看main函数
1
| 6f759f8f7:deg::796486<8<8edf9:73
|
只有一个这个然后就输出了这个
一开始看不懂
结果。。因为《高卢战记》是凯撒写的,书里面用的3的位移,所以要用-3
这样接出来就是flag
1
| flag{3c426c5c47abd774631539595bac6740}
|
真恶心,为什么不是misc
最短路
直接得到最短26
画图或者ai(比ai还快)
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
| from prism import *
import heapq
def dijkstra(graph, start, end): heap = [(0, start)] distances = {node: float('infinity') for node in graph} distances[start] = 0 paths = {start: []}
while heap: (dist, current) = heapq.heappop(heap) if dist > distances[current]: continue for neighbor, neighbor_dist in graph[current].items(): old_dist = distances[neighbor] new_dist = dist + neighbor_dist if new_dist < old_dist: distances[neighbor] = new_dist paths[neighbor] = paths[current] + [neighbor] heapq.heappush(heap, (new_dist, neighbor)) return distances[end], paths[end]
graph = { 1: {2: 2, 3: 3}, 2: {3: 5, 4: 3, 10: 20}, 3: {5: 6, 8: 5}, 4: {5: 7}, 5: {9: 4, 8: 1}, 6: {7: 3}, 7: {14: 6}, 8: {11: 5, 15: 21}, 9: {12: 5}, 10: {}, 11: {15: 13}, 12: {15: 9}, 14: {15: 7}, 15: {} }
distance, path = dijkstra(graph, 1, 15)
print(f"最短距离: {distance}") print(f"路径: {' -> '.join(map(str, path))}") pmd5("1381115")
|
1
| flag{4991ce1781b53409a7a84e2baf9431d6}
|