操作系统关键知识点之格式化字符串攻击与返回libc攻击深度解析

操作系统关键知识点之格式化字符串攻击与返回libc攻击深度解析

本次重新学习操作系统,希望将学习内容进行总结,与大家一同学习进步。以下将梳理相关知识点,并以通俗语言讲解,标注重点,最后通过表格总结。

一、知识点总结与通俗讲解

(一)格式化字符串攻击

  • 知识点printf函数的%n格式符会将%n前输出的字符个数存入指定变量,这可能导致内存被重写。若程序员未严格限制用户输入的格式化字符串,攻击者可利用此漏洞覆盖栈中函数返回地址,使程序跳转到任意位置(如注入的代码段)。若程序具有高权限(如SETUID root),攻击者可能借此获取系统控制权。
  • 通俗讲解:就像你让打印机打印一句话,结果打印机不仅打印了内容,还偷偷改了你的笔记本数据。黑客利用这个“漏洞”,通过精心构造的输入,让程序执行他们自己写的恶意代码,就像让程序“听黑客的话”,从而搞破坏或窃取信息。
  • 重点%n格式符的风险、内存重写机制、高权限程序的攻击后果。

(二)返回libc攻击

  • 知识点:当栈被设置为不可执行时,攻击者可通过修改函数返回地址指向libc库中的函数(如strcpy),利用该函数将恶意代码复制到可执行的数据段并执行。攻击过程需重写栈中的返回地址、伪造参数(源地址和目的地址),使恶意代码在数据段运行,获取程序权限。
  • 通俗讲解:好比黑客想进房间,但房门上了锁(栈不可执行)。于是黑客找到一把“备用钥匙”(libc库中的函数),用这把钥匙打开另一个门(数据段),把自己的“工具”(恶意代码)放进去,然后让程序去执行这些工具,从而控制程序。
  • 重点:栈不可执行场景下的攻击绕过、libc库函数的利用、数据段执行恶意代码的流程。

(三)攻击后果与防御背景

  • 知识点:两种攻击均可能使攻击者获取程序权限,若程序为高权限(如root),可导致系统被入侵(如创建root shell、植入僵尸程序)。现代CPU(如奔腾)支持设置栈为非执行权限,但部分操作系统不支持。
  • 通俗讲解:如果你的程序有“管理员”权限,黑客攻击成功后就像拿到了“管理员钥匙”,能在你的系统里为所欲为,比如偷偷打开后门、让你的电脑成为“僵尸”去攻击别人。而有些电脑虽然有“防贼锁”(栈不可执行),但系统可能没启用,给了黑客可乘之机。
  • 重点:高权限程序的攻击危害、硬件与系统的防御支持差异。

二、知识点对比表格

知识点核心原理攻击条件典型场景重点防御思路
格式化字符串攻击%n格式符写入字符数到变量,利用用户可控的格式化字符串重写栈内存(如返回地址)用户可输入格式化字符串;程序未过滤危险格式符含用户输入的格式化输出场景(如日志、交互界面)过滤%n等危险格式符;限制用户输入内容
返回libc攻击通过修改返回地址指向libc库函数(如strcpy),利用该函数将恶意代码复制到可执行数据段执行栈不可执行;存在可利用的库函数(如strcpy);可控制函数参数栈不可执行但库函数可被调用的场景设置栈为非执行权限;启用地址随机化;减少库函数滥用

写作不易,希望以上内容能对大家学习操作系统有所帮助。如果觉得文章有用,欢迎关注我的博客,点赞并留下你的评论,让我们一起在技术学习的道路上共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯年华@编程空间

原创文章不易,盼您慷慨鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值