wherekey
废话
看懂了wp后,感觉逆向真的很吃真相,在比赛的时候还不知道有sig签名这玩意,后面又看到一个静态链接的题目,发现有sig文件,然后在跟着天璇的wp逆了一遍后,发现自己的不足,需要每天都补一点网络编程了
流程分析
首先用ida静态分析一下,发现输出"Please enter the key:",这句话的函数在0x40261b,但在我远程动态调试的时候0x402609运行完程序就挂了,看了天璇wp说这里可能是环境原因,但我不知道怎么做测试
点进这个函数一看可以发现是open tty这个文件
在看看上面的一个初始化函数
发现第一个函数是套接字,而htons是跟网络相关的(笔者以前看过一点恶意代码分析经常看到这个函数,所以知道跟网络相关),返回的是套接字的返回值(大概判断一下,应该类似于句柄)
我们接着往下看,这回看汇C语言
我们可以发现,在while函数里有两个if语句的判断,由于没有动态调试,无法知道接下来的运行步骤,但是由于初始化的不同可以判断一下第一个函数应该是跟网络相关,第二个应该是跟文件相关
这个函数里面有recvfrom,而第一个参数就是dword_4C8520,所以可以知道这是一个接收套接字传过来的字节,每次接收5个,这下面的函数先不做解释(下面会说的)
我们接着往下看进入关于tty文件的函数
有read函数,所以我们可以判断这是输入函数,然后乙们再来观察发现有sendto函数,是发送字节的意思,并且每读取5个发送一次
此时我们再来看看sub_4022DE函数,其实这个是个加密函数
在sub_401f2e这里是可以直接通过动调给逆出来的,因为这里是把假flag进行加密,然后在进入sub_401E3E给我们输入的进行加密,最后在跳入
该地方进行验证,是否正确
exp我打算大部分题目都复现完后在自己敲一下