【发布时间】:2019-08-20 11:35:56
【问题描述】:
我遵循了这个Buffer Overflow Exploit tutorial 并在我的mingw32.exe 中编写了一个小应用程序来使用gcc 进行编译。但是,当我这样做时,出现以下错误:
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$ gcc vuln.c -o vuln -fno-stack-protector -m32 -z execstack
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: unrecognized option '-z'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: use the --help option for usage information
collect2.exe: error: ld returned 1 exit status
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$ gcc -c vuln.c -o vuln -fno-stack-protector -m32 -z execstack
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$ ld -z execstack vuln.o -o vuln
C:\msys32\mingw32\bin\ld.exe: unrecognized option '-z'
C:\msys32\mingw32\bin\ld.exe: use the --help option for usage information
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$ ld -v
GNU ld (GNU Binutils) 2.30
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$ C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe -v
GNU ld (GNU Binutils) 2.30
Liu.D.H@DESKTOP-KA8TQF4 MINGW32 ~
$
我可以在man ld 中找到execstack 选项以及上面匹配的版本。
【问题讨论】:
-
您链接到的代码适用于 Linux,但您似乎正在尝试在 Windows 上使用它?
-
@PaulR 是的,我用
msys2编译代码,是类似Linux的环境,不用-z execstack选项也可以编译运行。