我正在构建测试用例以学习软件安全性,但是我想通过SEH创建堆栈cookie绕过。这是我的代码。
#include <cstdio>
#pragma comment(lib, "Ws2_32.lib")
#pragma warning(disable : 4996)
int main() {
char name[32];
printf("Reading name from file...\n");
FILE* f = fopen("name.dat", "rb");
if (!f)
return -1;
fseek(f, 0L, SEEK_END);
long bytes = ftell(f);
fseek(f, 0L, SEEK_SET);
int pos = 0;
while (pos < bytes) {
int len = bytes - pos > 200 ? 200 : bytes - pos;
fread(name + pos, 1, len, f);
pos += len;
}
name[bytes] = '\0';
fclose(f);
printf("Hi, %s!\n", name);
return 0;
}
这是我用来生成可执行文件的命令,但是在启动计算器时此命令不起作用
cl stack_cookie_seh.cpp /Od /GS /link /DYNAMICBASE:NO /NXCOMPAT:NO