春秋杯 逆向 wp
Last Update:
sum
main函数:
1 |
|
首先是一个do while嵌套for的一个81次的循环,循环时当v3[i]的值等于0,会让用户输入一个字符,并且该输入必须在0-9之间
那么接下来进入verify函数:
不仔细看的话中等复杂,但他肯定是一段验证程序,因为它在if条件里嘛,满足条件就是win了。分析的话要么动调,要么为了省事直接问gpt(这个题效果还不错,有时候小心他会胡说八道):
solve:
知道是数独,提取出81个数据,找个在线网站解一下数独,再运行程序填进去flag就输出了
Poisoned_tea_CHELL
要么脱了壳看,动调也行,就是个xtea,当时的脚本丢了,懒得找了
BWBA
加密算法是DCT离散余弦变换,
但是比赛时候认为这个算法是不可逆的,所以用了z3来解这个值
方程生成:
1 |
|
z3:
1 |
|
注意z3的小数都是用分数表示的,精度不重要,大概就行了,取整输出就是flag
1 |
|
但是看别的师傅的wp,有逆算法直接就解出来了,还有用cv2库的
Pytrans
pyinstxtractor.py 解包
pyc反编译可以看到打开了一个so文件,ida打开这个so文件,有一个check函数,里面有一个方程,z3求解一下得到:511 112 821 949 517 637 897 575 648 738。
在linux里运行一下,一开始的输入就是这10个数,再输一遍,然后说让走迷宫。(比赛时就是这是卡住了)
接下来继续看pyc反编译的代码:
1 |
|
看不太懂,问问gpt:
1 |
|
既然能执行,那看看uncompressed_data里面是什么东西
打印出来后,放入010,是一个缺了文件头的pyc,补上之后反编译:
1 |
|
是一个迷宫,迷宫是利用输入的10个数生成的,我们可以修改源码,让他生成完后,自己输出迷宫:
从左上角走到右下角,路径:sddsdssdddwwwddsssssaaaaassddsddwdds
剩下的就简单咯
Emoji Connect
是个小游戏,代码段其实挺复杂的,可以一段段问gpt,大概了解到是一个连连看。
flag处理:
1 |
|
num数组给出,array数组也有,应该是最后全消了,所以数据都用到了,嫖的脚本:
1 |
|
OldSymbolicCode
是MS-DOS的应用程序,可以使用DOSbox运行,并且可以动调。
逻辑是判断长度是否为36,rc4+tea加密