
二进制安全
linux,windows下的二进制安全
iringzh
Accept challenges
展开
-
栈溢出之构造函数覆盖返回地址
栈溢出利用已知函数覆盖返回地址 题目:攻防世界 level2 查看文件的保护,发现没有栈哨,可以考虑覆盖返回地址。 利用IDA进行静态分析,找到vulnerable_function()函数 ssize_t vulnerable_function() { char buf; // [esp+0h] [ebp-88h] system("echo Input:"); return read(0, &buf, 0x100u); } read函数读入了0x100的大小到缓冲区,但是缓冲区只原创 2020-10-20 20:43:19 · 842 阅读 · 0 评论 -
栈溢出之覆盖函数返回地址
栈溢出之覆盖函数返回地址原理利用 原理 栈溢出:栈溢出就是栈上的缓冲区填入过多的数据,超出了边界,从而导致了栈上原有数据被覆盖。 函数调用的时候,会开辟一个栈帧结构。首先会将调用的函数的参数入栈,然后依次压入调用函数的返回地址和当前栈底指针寄存器(BP)的值入栈。其中压入返回地址是通过call指令来实现的。 在函数调用结束的时候,将栈指针SP重新指向帧指针BP的位置,并弹出BP和返回地址IP。这样函数状态将恢复成进入子函数的状态,实现了函数栈的切换。 当用call指令调用一个函数的时候,首先会将IP寄存原创 2020-10-18 23:00:56 · 3627 阅读 · 2 评论