Cs:app Lab(深入理解操作系统实验)03AttackLab 未输入任何字符串却触发Segmentation fault的解决方法

文章讲述了作者在Ubuntu20+版本上进行AttackLab实验时遇到的Ctarget程序CodeInjection实验中的Segmentationfault,源于缓冲区溢出。作者发现切换到Fedora39虚拟机后问题得到解决,建议遇到类似问题的用户尝试在Fedora环境中进行实验。
摘要由CSDN通过智能技术生成

AttackLab实验中有三个主要程序,一个是Ctarget程序,用于完成Code Injection实验,它接收字符串并返回结果,共有touch1,touch2,touch3三个小题,另一个是Rtarget程序,用于完成Return-Orient实验,而Hex2Raw程序则是一个十六进制字节数转换成ASCII标准输入的小工具

我在进行Ctarget,touch1实验时,发现无论我输入什么字符串,程序的输出结果总会出现Ouch!you cause a Segmentation fault

打开GDB调试后我发现程序在执行时就因为缓冲区溢出产生了中断信号,后面的代码都没有执行下去

#0  0x00007ffff7c750d0 in __vfprintf_internal (
    s=0x7ffff7e1a780 <_IO_2_1_stdout_>, 
    format=format@entry=0x4044bc "Type string:", ap=ap@entry=0x556311b8, 
    mode_flags=mode_flags@entry=0)
    at ./stdio-common/vfprintf-internal.c:1244
#1  0x00007ffff7c6079f in __printf (
    format=format@entry=0x4044bc "Type string:")
    at ./stdio-common/printf.c:33
#2  0x00000000004022c3 in launch (offset=<optimized out>)
    at support.c:293
#3  0x000000000040233d in stable_launch (offset=<optimized out>)
    at support.c:340

我当然看不懂这是啥,后面经过漫长的搜索,发现这可能是系统问题,在使用Ubuntu桌面版20+版本时,进行attacklab实验,运行程序都会出现缓冲区溢出的问题,但是我安装了Fedora39的虚拟机版本后,程序就可以正常读入字符串了

所以如果有和我类似问题的使用Ubuntu桌面版的朋友,可以试试安装一个Fedora虚拟机来进行Lab实验

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值