每日一练之"got&plt 延迟绑定"
解题步骤
好了,那么先来说说什么是延迟绑定技术
呐,这个呢就得从动态链接说起,因为呢为了提高这一过程的效率,将符号链接这一过程呢放在了运行时,也就是当你调用的某个函数的时候呢,再去链接,为什么这样做呢?因为大部分库函数可能你并不会用到,如果提前链接这么多函数,效率肯定很低,那么第一次运行时再去绑定函数地址,然后后面再次调用这个函数时则不需要重复链接了,可以直接调用,这样做能够相对提高不少效率
可以知道动态绑定就是理解为,我要用了,我才去调用的一种技术,类似于Swift里的lazy var
我们看到题目中


有一个全局变量的指针,可以试着让指针去覆盖返回地址
看汇编的最后进行了call,那么只要第一个打入exit的地址第二个打入win的地址即可,但是这里不能是0x08048780,因为有动态绑定嘛,我们打入的函数地址应该是got层的,所以向里面进



最终得到0x0804A01C
1 | p.recvuntil("Input address\n\n") |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记!