一个Linux下C语言的问题,求大神解答!!

[复制链接]
查看11 | 回复4 | 2013-4-24 12:49:02 | 显示全部楼层 |阅读模式
不改变代码的话,估计叫你溢出堆栈,他给你的编译命令行也把堆栈保护关掉了:no-stack-protectorGetInput执行完的返回地址,要被改成NeverExecutes的地址,然后返回就到了NeverExecutes而且gets没有检查长度,所以你给他多少他就写多少,写到buffer外他也不检查,你只要一直输入把返回地址给正好覆盖掉不过有些字符不好输入,估计再用其他程序往stdin里写比较好...
回复

使用道具 举报

千问 | 2013-4-24 12:49:02 | 显示全部楼层
#include
void NeverExecutes(){
printf("Hacked!!! This function was not supposed to run!\n");}
void GetInput(){
char buffer[8];
printf("Enter a strin...
回复

使用道具 举报

千问 | 2013-4-24 12:49:02 | 显示全部楼层
NeverExecutes() ;写在main 中 就要调用 啊 ......
回复

使用道具 举报

千问 | 2013-4-24 12:49:02 | 显示全部楼层
没明白 什么叫"在不改变代码的前提下调用NeverExecutes()函数"????...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行