对pwn格式化字符串的浅显理解

文章介绍了格式化字符串漏洞的基本原理,通过示例程序展示了当printf函数未指定输出格式时,如何可能被恶意输入如%d或%p所利用。对比了指明输出格式如%s时,程序的安全性提高,从而防止此类漏洞的利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

格式化字符串原理,浅显理解

1.格式化字符串漏洞通常是 printf函数未指明输出格式 例如:char buf[20];scanf("%s",buf);printf(buf); 这时候可以输入格式化字符 %d,%p等控制函数的输出。如果程序指明输出的格式,则无法利用格式化字符串漏洞 例如:char buf[20];scanf("%s",buf);printf("%s",buf); 2.### 简单解释格式化字符串原理1.这是两段程序的源码:* 1️⃣#include <stdio.h>void main(){char buf[20];scanf("%s",buf);printf("%s",buf);} * 2️⃣#include <stdio.h>void main(){char buf[20];scanf("%s",buf);printf("%s",buf);} 2.对应的汇编代码:* 1️⃣

< img src=“https://hnxx.oss-cn-shanghai.aliyuncs.com/official/1678694737820.png?t=0.6334725112165747” />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值