金陵某道re

题目不难就是长
第一次见到培根密码的逆向
算是长见识了

aspack不多说了
直接讲主要算法吧
这题分了3小问,算法涉及的挺多
但都是基础

maze

首先是个maze啊
maze简单可以直接秒
1
wasd玩过游戏的都知道是上下左右
每行有30个//看v6的变化
通过v6和v2也可以看出来初始位置在第二行第二个
判定的话就是只能走2,0可以理解为墙,要走到6
吧地图dump一下吧
2
标记了一下2和6
最短路径很明显啊

ddssassssssssddssssssddddsdddddddddddd

rootname

中间还有一个pwd就是个xor
pwd是123456789这边不写了,与最终的flag也无关
rootname和whoyouare的验证其实挺吓人的。。。
3
我是直接对着反汇编怼的,看反编译有点头疼。
//毕竟当时是在怼完kanxue那题的情况下看的,脑子已经晕呼呼了=。=
4
首先是个复制
然后一个循环操作又是取模又是除的想都不用想就知道了
明显一个进制转换直接在下面下断点跳
在内存中也能看到
5
b16//本质上就是字符串转16进制
玩过今年西湖论剑的都可以发现这算法和里面出现的b58一个样
紧接着又可以看到一个复制操作。。。
然后就是栅栏了
6
当时写的时候也没想到是栅栏
我是直接改内存后看回显的置换表来解的
当然现在想想肯定是写烦了。。。
栅栏每组字数是5,直接网上在线解一下
然后下面一个去码表的大循环是个b64很明显
7
紧跟着的就是上面那个栅栏函数。。。
最后是与内存中的字符串比较
NTUGNDM3OUA3NTY1RDQzNjZ5
解的话很简单
先栅栏解出原来b64
NDA1NTM3RjU3NDZGOTQ5NUYz
b64解出
405537F5746F9495F3
栅栏一次
437950744F5F69355F
b16一下
CyPtO_i5_
当初的脚本因为是打出表来写的就不上了

whoyouare

终于到最后的whoyouare了
这里就涉及到了培根密码了
识别也很简单
在b64码表下面可以看到培根的码表
8
这边顺带提醒一下
输入的话必须是字母
如果输了其他什么数字啊会崩
当时就是卡在这以为是什么反调试或者脱壳脱崩了。。。。
调了好久。。。
程序显示一个大小写转换
然后是bacon
接着一个凯撒
9
可以看到ab都被整成了GF
//不管你们有没有GF反正我有
// 233333
//跑题了
后面还有一个栅栏
10
然后是比较
GFFFGGFGFFFGFGGFFFGGFFGFFFFFFF
凯撒回来
BAAABBABAAABABBAAABBAABAAAAAAA
栅栏
BAABAABBBAAABAAAAAAABAABABBAAA
解一下
SOEASY
提交的时候都要大写
这题有个多解问题就是不管你输入的是soeasy还是SOEASY都是对的
到此结束

Conclusion

这题代码量挺多的,但算法都不错,适合入门。
也把这题分享给了一些萌新
所以此篇blog写的比较详细233

文章目录
  1. 1. maze
  2. 2. rootname
  3. 3. whoyouare
  4. 4. Conclusion
|