【发布时间】:2016-02-07 03:08:17
【问题描述】:
我正在尝试编写一个非常简单的程序,重点介绍如何使用缓冲区溢出漏洞绕过受密码保护的系统。代码如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char buff[15];
char tempbuff[15];
int pass = 0;
printf("\n Enter a password of length between 1 and 15 characters : \n");
gets(buff);
//strcpy("%s",buff);
printf("\n Enter your password : \n");
gets(tempbuff);
//strcpy("%s",tempbuff);
if(strcmp(tempbuff, buff))
{
printf ("\n Wrong Password \n");
}
else
{
printf ("\n Correct Password \n");
pass = 1;
}
if(pass)
{
/* Now Give root or admin rights to user*/
printf ("\n Root privileges given to the user \n");
}
return 0;
}
本质上,我试图通过在第二次被要求输入我的密码时输入一个大于 15 个字符的字符串来将 pass 变量的值从 0 更改为 1。但是,到目前为止,我还不能这样做。任何帮助将不胜感激!
【问题讨论】:
-
你用 Google 搜索过“如何利用缓冲区溢出 C”吗?
-
我已经将它编译成程序集,但似乎无法确定 pass 变量的位置。
-
如果你使用 gcc,你可以使用
-g编译可执行文件,然后使用objdump -S executable得到C代码和汇编程序的混合 -
你如何编译你的程序?
标签: c buffer-overflow