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实验