【发布时间】:2014-02-26 20:05:00
【问题描述】:
作为我任务的一部分,我必须在我的 linux 机器中演示 stackoverflow。
我的盒子配置: 操作系统:Ubuntu 13.04
GCC 版本:4.6.3
我尝试使用标志 -fno-stack-protector 编译程序,程序成功编译,但是当我触发堆栈溢出时出现分段错误错误。我怎样才能显示实际的o / p。 缓冲区溢出 Pgm:
int main(int argc, char**argv)
{
int authentication=0;
char cUsername[10], cPassword[10];
strcpy(cUsername, argv[1]);
strcpy(cPassword, argv[2]);
if(strcmp(cUsername, "admin") == 0 && strcmp(cPassword, "adminpass") == 0)
{
authentication = 1;}
if(authentication)
{
printf("Access granted");}
else
{
printf("Wrong username and password");
}return 0;}
如果我给一个像 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A 那么它应该显示已授予访问权限,但现在它显示分段错误
【问题讨论】:
-
你想溢出栈执行shell代码吗?
-
是的,我想将一个长字符串复制到一个小字符数组中。
-
这听起来更像是堆栈损坏而不是堆栈溢出。
-
Okie.....那么我怎样才能成功地演示它..?
-
如果你有一个 SIGSEGV 那么你已经证明了它:你在一个小缓冲区中写入了太多数据,你被操作系统抛出了一个段冲突。你想具体展示什么?
标签: c gcc ubuntu-13.04