#默认的编译选项
cqq@kali:~/CTF$ gcc vuln.c -o vuln1
# -fno-stack-protector 禁用栈保护措施
cqq@kali:~/CTF$ gcc vuln.c -o vuln2 -fno-stack-protector
# -m32 表示在64位系统下编译32位的二进制文件,需要额外的库支持
cqq@kali:~/CTF$ gcc vuln.c -o vuln -fno-stack-protector -m32
cqq@kali:~/CTF$ shasum -a1 vuln1
ddb459cf1550383fff8a512c7038072df6ed3a79  vuln1
cqq@kali:~/CTF$ shasum -a1 vuln2
ddb459cf1550383fff8a512c7038072df6ed3a79  vuln2
cqq@kali:~/CTF$ file vuln2
vuln2: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=fe8c2e7d1b2d8b48eddb3df8b6af06a068556635, not stripped
cqq@kali:~/CTF$ file vuln
vuln: ELF 32-bit LSB pie executable Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=04acea3491a1a08e9c96b8d78847e9d31baa63fd, not stripped

发现确实加了-m32参数的二进制就是32位的,而没加这个参数的就是默认的64位的。

参考

https://dhavalkapil.com/blogs/Buffer-Overflow-Exploit/

linux编译选项-fno-stack-protector/-m32相关推荐

  1. ARMCC/GCC下的stack protector

    Stack overflow攻击是一种很常见的代码攻击,armcc和gcc等编译器都实现了stack protector来避免stack overflow攻击.虽然armcc和gcc在汇编代码生成有些 ...

  2. 编译驱动模块时,出现“stack protector enabled but no compiler support”[解决办法]

    写驱动程序,编译驱动模块时,出现 "make[1]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64' /usr /src ...

  3. linux强刷cache,linux I/O stack cache 强制刷新

    linux 存储子系统作为最为复杂的子系统之一,拥有很深的模块栈(如图),其中很多模块又有自己的缓存功能(如下图).实际应用中,用户下发的数据停留在哪个缓存中,是否已经写入磁盘,这些操作对用户来说是个 ...

  4. 在64位的Linux系统使用gcc的-m32选项编译32位的程序得到了多余的代码(多余指令call和add)、有多余的.text.__x86.get_pc_thunk.ax

    问题解决于该网站 首先讲一下问题是怎么发生的: 最近在学计算机系统,用到的教材是32位的Linux系统,而在我的64位的Ubuntu上,我想以gcc编译出32位的程序并查看其汇编代码,于是百度查了下, ...

  5. linux编译c 优化,Linux编译选项

    Linux平台都通过CC调用它们的C编译程序.除标准和CC以外,LINUX和FREEBSD还支持gcc. 基本的编译命令选项有以下几种: 1. -c    (compile) 编译产生对象文件(*.o ...

  6. Linux防止stack缓冲区溢出的有效方法

    检测和防治stack缓冲区溢出的方法可谓是汗牛充栋,如果讲起来,那便是一个系列,我也不知道该从何说起.比如说stack-protector选项,我之前就介绍过: https://blog.csdn.n ...

  7. 深夜磨刀,Linux Graphics Stack 概述 | Linux 驱动

    哈喽,我是老吴. 今天给大家分享一些关于 Linux 图形显示的要点,这些要点构成了 Linux 图形显示的框架. 希望对大家有帮助! 1. 引言 1) 什么是 Graphics? 当我们看到一个东西 ...

  8. 【学习札记NO.00004】Linux Kernel Pwn学习笔记 I:一切开始之前

    [学习札记NO.00004]Linux Kernel Pwn学习笔记 I:一切开始之前 [GITHUB BLOG ADDR](https://arttnba3.cn/2021/02/21/NOTE-0 ...

  9. gcc -fstack protector 原理

    zephyr s32k144 linux上见到过stack protector的call stack 打印知道它依赖编译器的支持, 没想到zephyr上也添加了支持 摘自gcc官网对这个编译选项的解释 ...

最新文章

  1. 网关技术选型,为什么选择 Openresty ?事件驱动、协程...
  2. Windows Server应用之32位系统如何安装64位打印机驱动
  3. 数据控制语言(DCL)语法合集
  4. 产品设计的从0到1全流程:以优惠券为例
  5. 计算机应用虚拟仿真实验答案,虚拟仿真 实验教学+.ppt
  6. JDBC中事务、批量操作、大数据类型、获取自动生成的主键、等用法
  7. log添加 oracle redo_添加Redo log Member/Group-Oracle
  8. 对MAC自带的SVN进行升级
  9. 改进后的日志类CLogger
  10. visio 绘图矢量图素材网站
  11. 关于解决未在计算机注册Active控件或者没有Active控件的解决方法
  12. 数学分析教程(科大)——1.6笔记+习题
  13. eli和字符串(尺取算法)牛客网2020寒假训练营1
  14. win下激活python虚拟环境及激活失败解决方案
  15. 【QTdesigner】课时36.使用QTextEdit控件输入多行文本【pyqt5+QTdesigner模式】
  16. 微服务商城系统(十) Spring Security Oauth2 + JWT 用户认证
  17. 关于安装了非正版Office软件(原电脑有正版)后不能使用原正版office解决方法!!!
  18. 如何在模拟器中安装App
  19. requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘localhost‘, port=8123): Max retries ex
  20. cocoscreator实现射箭效果

热门文章

  1. VS中sln和suo的区别
  2. mysql中输出100内质数,oracle中用while循环查询1到100的质数(素数)
  3. iOS:你会如何设计一个框架,给别人使用!
  4. 计算机科学修改后再审,避免论文盲审因格式问题低分甚至引发修改后重审的后果,.doc...
  5. 金沙滩KST51第五章习题
  6. 计算机行业岗位排名,全国“最缺工”100个职业排行,这些专业就业率高,发展前景好...
  7. Word中的7个特殊字符你知道几个?上班族务必要看!
  8. B站首个UP主付费观看视频还是来了!价格“劝退”网友
  9. 1分钟学会PS污点修复
  10. python获取文件后缀_Python使用filetype精确判断文件类型 (文件类型获取)