1.题目
2.IDA反汇编C程序
3.流程分析
首先,选择login或者退出,选择login,则输入名字和密码,然后校验密码长度,长度小于等于3或者大于8等密码错误,否则成功。
但是看到这里,会有疑问,成功了之后呢?flag呢?在IDA的function view查找,发现一个函数what_is_this。一个存在于原函数但是我们程序流程里面没有调用过的函数。于是思路立马清晰了。我们需要通过栈溢出来覆盖返回地址,将函数what_is_this的地址覆盖到返回地址上。
首先,选择login或者退出,选择login,则输入名字和密码,然后校验密码长度,长度小于等于3或者大于8等密码错误,否则成功。
但是看到这里,会有疑问,成功了之后呢?flag呢?在IDA的function view查找,发现一个函数what_is_this。一个存在于原函数但是我们程序流程里面没有调用过的函数。于是思路立马清晰了。我们需要通过栈溢出来覆盖返回地址,将函数what_is_this的地址覆盖到返回地址上。