我关闭了 gcc 堆栈保护器的 ASLR 和 tern。
我编写了易受攻击的 C 代码并试图溢出缓冲区,因此我检查了崩溃需要多少字符。我试图将返回地址更改为另一个函数,但我收到一条消息:
Segmentation fault (core dumped)
这是我的 C 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sss()
{
printf("good by");
}
void scriptpy(){
printf("hello world\n");
}
int main(int argc , char** argv)
{
char buf[4];
gets(buf);
return 0;
}
我找到了“sss”函数的地址,并尝试插入十六进制值。
这是我的地址:
(gdb) disas sss
Dump of assembler code for function sss:
0x00000000000006ca <+0>: push %rbp
要编辑我插入的退货地址:
printf "AAAABBBBB/xe2/x06/x00/x00/x00/x00/x00/x00" | ./cTutorial