VM的题目我在比赛上看到很多···
ELF文件 先拖进虚拟机跑一下
看到关键词
IDA启动!
关键函数
当程序执行到sub 4009B3
Getchar
看一下堆栈
猜测应该是strlen
开始读数据 一次读一个··然后进行运算·
在数据里看到
猜测输入的数据可能跟NCTF有着某些联系
注意一下他们的case 1D (n) 13(c) 15(t) 13(f)
观察一下 是做了什么运算
第一次
A1*=a2
A1 +=a2
A1^=a2
再次回到0x13
分析一下 开头 V11流程表
远程连接IDA把电脑搞崩了···
后边找到放数据的地方
每做一次运算之后 地址 – 4
由于是小端存储··
可以得到
0x36d3 0x2aff 0x2acb 0x2b950x2b95 0x169f 0x186d 0x18d7 0x1611 0x18d7 0x2895 0x2c23 0x2ca9 0x1611 0x1611 0x18d7 0x2aff 0x1849 0x18fb 0x2acb 0x2a71 0x1735 0x18d7 0x1611 0x2acb 0x15dd 0x18d7 0x2c23 0x169f 0x15dd 0x2b95 0x169f 0x156b 0x186d 0x2aff 0x1611 0x1611 0x15dd 0x2aff 0x2c23 0x2acb 0x15dd 0x15dd 0x186d 0x1849 0x2b95 0x156b 0x1735 0x18fb 0x18fb 0x2a71 0x2aff 0x1735 0x2c23 0x15dd 0x18d7 0x2a71 0x18d7 0x18d7 0x2c23 0x2aff 0x156b 0x156b 0x2c23 0x169f 0x35af 0x2ca9 0x32b5 0x2aff 0x3039
写exp抛出答案
总结,第一次做VM题 感觉前面思路很迷茫·不知道改从何入手,请教了一波师傅··读case代码的时候不是很清晰·· 靠动态调试勉强能整理出思路·· 最后看到nctf还要靠猜测, 好在算出来了。