QWB-imitation_game

​ 放入IDA后看下string发现存在”Your flag: flag{input1+input2}“字符串,因此可以判断会存在两层输入,用gdb调试下去发现有个cmp edi,2总是过不去,后面发现题目还给了个bin文件因此猜测是作为命令行参数读入,然后就会通过了,继续单步下去会发现fork了一个子进程,然后会ptrace一下,然后会把你的输入填充0x1a补成64字节,又会给你两串16字节的数,越来越有点标准加密的味道了,再更具会发现一个256的表,一查果然是AES的表,再根据给的两串数,猜测是AES,CBC模式加密。

1
2
3
4
5
6
7
8
 from Crypto.Cipher import AES
key=b"\x3e\x2c\x25\x13\x18\xbe\xc3\x6b\xa1\x37\x24\x53\x03\x1e\x51\xec"
iv=b"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
enc=b"\x9d{\xa2<\xb1\t\x9aHA\xd1fc\xd6\xae<\xab@\x89\x92\xf3R\xb2\x11\x16\xf5\xea~\x97\xb7\x1c\x011\xe8\x19\x01\x8b+\x91\xbe&2k\xd4%0\\\xc2\x87"
#enc=b"\x35\x24\x66\xbf\xf5\x59\x11\x95\xd0\x0e\xf4\x95\x58\x2c\x2f\xd1\x5d\x58\x22\xe9\x5f\x7f\xaa\x84\x6e\x00\xc2\x1c\x43\x55\xe9\xf3\x91\xfd\x02\x40\x63\x55\xf0\x50\x8a\xb6\xd1\xa5\x28\xfa\x3e\x2c\xd9\x36\xc2\xbb\xc8\x27\xa9\xe8\xc2\x4e\x37\xd7\x6c\x84\xa4\x8f"
aes=AES.new(key,AES.MODE_CBC,iv)
print (aes.decrypt(enc))
b'6c8f1d78770fe672122478c6f9a150e4\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a'

继续用gdb单步下去就会触发异常,执行不到第二层。这时突然想起之前gdb调试不是fork了一个子进程,但返回一个空的进程号,在gdb里用show follow-fork-mode查看一下发现调试的就是子进程,因此切换成主进程set follow-fork-mode parent,这次再重新调试发现直接进入到第二层了,第二层会读入game.bin文件内容,然后启动一个窗口有点像bochs,会让你输入十个数不对的话会出现dead。

image-20200908155518934

后面题目放了提示chip-8,一查资料原来是一个模拟器,有它自己专门汇编语言,在GitHub上也有专门的反编译器。反编译出来的效果如图

image-20200908155601343

在维基百科上有所有CHIP8指令含义,他有一个专门的getkey()指令作为从缓冲区读入的接口,从这里开始分析,并结合调试逆向分析,模拟器会把你输入的10个数依次放入V0-V9是个寄存器中,然后每个数会做一个加减亦或运算,然后就是调用0x027a(会传两个参数一个是你输入的数,另一个程序给的),这其实是一个乘法运算,把运算式列出来其实就是10个多元一次方程。方程式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
V0 = V0 + 2
V1 = V1 + 1
V2 = (V2 + 1) ^ 1
V3 = V3 + 3
V4 = V2 + 2
V5 = (V5^2) + 1
V6 = V6 + V6
V7 = V7 + 1
V8 = (V8 ^ 1) + 1
V9 = V9 + 2
V0+V1*2+V2==33
V0*2+V1+V2==42
V0+2*V1+2*V2==48
V3+2*V4+V5==55
2*V3+V4+V5==55
V3+2*V4+2*V5==59
V6+2*V7+V8==31
2*V6+V7+V8==22
V6+V7*2+V8*2==32
V9==5
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2022 llx-moon
  • Visitors: | Views:

请我喝杯咖啡吧~