格式化字符串漏洞

一、格式化字符串漏洞原理

格式化字符串是一种很常见的漏洞,其产生根源是printf函数设计的缺陷,即printf()函数并不能确定数据参数arg1,arg2…究竟在什么地方结束,也就是说,它不知道参数的个数。它只会根据format中的打印格式的数目依次打印堆栈中参数format后面地址的内容

格式字符串漏洞发生的条件就是格式字符串要求的参数和实际提供的参数不匹配。

常见格式化字符串漏洞函数如下:

任意内存读

任意的内存的读取需要用到格式化字符串 %s,其对应的参量是一个指向字符串首地址的指针,作用是输出这个字符串。

在任意内存的读取之前要知道局部变量是存储在栈中,通过所输入的格式化字符串找到输出的参数的位置。

采用%s的方式读整数,需要参考ASCII码表:

任意内存写

任意地址的内存写,通过%n格式字符完成。

%hn 一次性写入2个字节

%hhn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值