【web-攻击本地编译性应用程序】(11.3)格式化字符串漏洞

目录

格式化字符串漏洞

1.1、简介:

1.2、查找格式化字符串漏洞

简述:

过程:


格式化字符串漏洞

1.1、简介:

1、如果用户可控制的输入被当做格式化字符串参数提交给一个接受可能被滥用的格式说明符的函数(如C计言中的pcintf系列函数),就会产生格式化字符串漏洞,这些函数接受的参数数量不定,其中可能包含不同的数据类型,如数字和字符串,提交给函数的格式化字符串中包含的说明符告诉函数,变量参数中应包含何种数据,以及这些数据以什么格式表示

2、最危险的格式说明符为%n,这个说明符不会导致什么数据被打印。相反它使已经输出的字节数量被写入到以相关变量参数提交给函数的指针地址中

3、如果格式化字符串中的说明符比提交给函数的变量参数多,而函数又无法探查到这一点,那么它就会继续处理调用栈中的参数

4、如果攻击者能够控制提交给printf之类函数的全部或部分格式化字符串,就可以利用上述行为重写进程内存的重要部分,并最终执行任意代码。由于攻击者控制着格式化字符中,所以他能够控制函数输出的字节数量以及栈上被输入的字节数量重写的指针,这样攻击者就能够重写一个已保存的返回地址或者一个指向异常处理器的指针,进而控制代码执行,就像在栈溢出中一样

1.2、查找格式化字符串漏洞

简述:

在远程应用程序中探查格式化字符串漏洞的最有效方法是,提交包含各种格式说明符的数据并监控应用程序的任何反常行为。与不受控制地触发缓冲区溢出漏洞可能造成的后果一样,在一个易受攻击的应用程序中探查格式化字符串漏洞可能会导致系统崩溃


过程:

1、轮流向每个目标参数提交包含大量格式化说明符%n与%s的字符串

基于安全考虑,一些格式化字符串操作可能会忽略%n说明符。相反提交%s说明符将会使函数废弃栈上的每一个参数,如果应用程序易于受到攻击,就可能会导致非法访问

2、Windows FormatMessage函数以一种不同的方式使用printf系列函数中的说明符。测试调用这个函数是否易于受到攻击

3、将%字符URL编码成%25

4、与查找缓冲区溢出漏洞时一样, 应该监控应用程序响应中出现的反常事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值