Tag: 漏洞利用

使用堆溢出来写入任意数据

我一直在努力学习堆溢出攻击的基础知识。 我最感兴趣的是使用损坏或修改块元数据作为攻击的基础,但我也对其他建议持开放态度。 我知道我的挖掘目标应该是用challenge()函数指针覆盖printf() challenge()函数指针,但我似乎无法弄清楚如何实现该写入。 我有以下一段代码,我想利用它,它使用glibc 2.11.2 malloc : void challenge() { puts(“you win\n”); } int main(int argc, char **argv) { char *inputA, *inputB, *inputC; inputA = malloc(32); inputB = malloc(32); inputC = malloc(32); strcpy(inputA, argv[1]); strcpy(inputB, argv[2]); strcpy(inputC, argv[3]); free(inputC); free(inputB); free(inputA); printf(“execute challenge to win\n”); } 显然,实现对分配的块的元数据的实际覆盖是微不足道的。 但是,我还没有找到使用任何标准技术来利用此代码的方法。 我已阅读并尝试实施以下技术: 论文:关于堆溢出的 w00w00 虽然论文非常清楚,但是unlink技术已经过时了一段时间。 Malloc Maleficarum.txt […]

C中的堆栈溢出漏洞利用

问题实际上是关于C中的堆栈溢出。我有一个我不能为我的生活完成的分配,我已经查看了gdb中的所有内容,我只是无法想象它。 问题如下: int i,n; void confused() { printf(“who called me”); exit(0); } void shell_call(char *c) { printf(” ***Now calling \”%s\” shell command *** \n”,c); system(c); exit(0); } void victim_func() { int a[4]; printf(“[8]:%x\n”, &a[8]); printf(“Enter n: “); scanf(“%d”,&n); printf(“Enter %d HEX Values \n”,n); for(i=0;i<n;i++) scanf("%x",&a[i]); printf("Done reading junk numbers\n"); } int main() { printf("ls=736c — […]

使用单个系统()调用在C中执行多个命令

在我正在研究的信息安全实验室中,我一直负责执行多个命令,只需调用“system()”(用C编写,在Fedora上运行)。 什么语法允许我执行多个命令通过system()? (如果程序通过system()调用与OS交互,那么你可以通过在远程计算机上运行的程序执行任意命令。) 即: char command[] = “????? \r\n”; system(command);