👴好像上周没干啥,复现了点东西,查到自己有点知识点不好的地方,一个是angr,一个是vm,还有一个动态规划,这周主要是进行他们几个加强训练,因为RCTF有一个VM和动态规划,所以说我就不格外找题了,以题代练了,angr我看科二师傅给我的md学习,动态规划的话,我准备去看视频,看paper有点看不懂!
步入正题
看雪CTF-第十二题 白云苍狗
看说一个windows逆向,盘!
我用od调试了一下,去看了一下什么逻辑
我输入的KCTF,把我输入进去的字符都减去了0x37,存在了0x1311CB8,我们输入的长度在4到16之间
我把key_new2 72个数据搞出来013119DF 00 01 01 01 00 01 00 00 00 00 01 00 01 01 01 00 00 01 01 01 00 00 01 01 01 00 00 01 00 00 01 01 00 00 00 00 00 01 01 00 00 00 01 01 01 01 01 00 01 00 00 00 01 01 00 01 00 01 01 00 00 01 01 01 01 00 00 00 01 01 00 00
这里,这群0 1,代表的就是我们输入的数据转化成了hex,再转化成了二进制逐位放进去:
这个就是例子,类似于了我们内存中的 00 01 01 01
我用了题目中给的密码:E247EC9C06C71B6E13,所以猜测这里是要给类似于计算机组成原理的运算
https://www.dllhook.com/post/217.html
发现不太好使,去看看是干了什么
万用门其实就是数字电路中的与非门,一般是用nor表示。
Nor(a,b) = ~a & ~b
Not(a) = ~a = ~a & ~a = Nor(a,a)
Or(a,b) = a | b = ~(~a & ~b) = Nor(Nor(a,b),Nor(a,b))
And(a,b) = a & b = ~~a & ~~b = Nor(Nor(a,a),Nor(b,b))
Xor(a,b) = (~a & b) | (a & ~b) = (0 | (a & ~b)) | (0 | (b & ~a)) = (a & (~a | ~b)) | (b & (~a | ~b)) = (~a | ~b) & (a | b) = ~(a & b) | ~(~a & ~b) = Nor(And(a,b),Nor(a,b)) = Nor(Nor(Nor(a,a),Nor(b,b)),Nor(a,b))
Aryb1n师傅的脚本:😂直接拿过来学习一下
1 | #!/usr/bin/python |
1 | 8b9 = 949 Nand 992 |
半加器:真值表
被加数A | 被加数B | C | S |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
A ^ B = S
A & B =C
判断加法,就能大概就能猜到是乘法,刚开始那么就是个平方的东西
mod 4321040810422309623323,继续分析就是大概总结出来就是 x^27 = 556372 mod n
那么使用欧拉定理:(x^27)^y = x = 556372^y (mod m) 得到 4A3A9740B735704562