X-NUCA8月专题赛赛前练习第二题的解题思路
VC8的程序无壳无花,简直好评。直接用xspy定位按钮响应函数:
直接扔到OD,下个断点向下跟:
单步走一走,围观用户名和密码的读入,然后看看都做了什么操作:
由于估计是VS2012或者VS2010编译的,所以牵扯到unicode和ASCII的转换,这些都不太重要,继续往下F4+F8走着……
第一个关键函数和跳转,貌似会检查你的用户名和下载的用户名知否一致?不一致就会挂,这里一致的话直接过掉。然后看到一串奇怪的base64:
eax=00195EE0, (ASCII "5CjV18S5la+Q/rIrXkhMRQ==")
ebx=D2993F27
猜测和用户名有关,继续往下找比较的地方(跳过很多求长度的循环):
这里可以很容易看出是一个字符串的拼接,把输入的密码按照奇数和偶数位拆开,然后做拼接,继续前进……
看到了关键的比较函数,push了两个参数,一个是变换了之后的密码,还有一串乱七八糟的16进制,F7跟进去看看:
断点下到这里,一目了然。直接把变换后的密码和那串数字比较:
3 5436a56313853356c612b512f724972586b684d52513d3d
所以写个脚本,把变换之前的密码求出来,即拆成两半,然后插入……
最后的flag:
325f473264a957623518368b5638345d65c2651123bd531d