当前位置: 首页 > news >正文

【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、与查找缓冲区溢出漏洞时一样, 应该监控应用程序响应中出现的反常事件

相关文章:

  • 安装redis过程中make报错
  • 商城模板_商城模板网站html5_微信小程序商城模板
  • springboot基于VUE框架的商城综合项目设计与实现毕业设计源码111612
  • java.net.UnknownHostException: home
  • 高等数学(第七版)同济大学 习题6-3 个人解答
  • RTC调试
  • 多线程如何使用MDC传递上下文信息
  • HAproxy+Nginx7层负载均衡
  • 算法竞赛进阶指南 货仓选址
  • 报告分享|OpenMediation:2022年年中全球手游市场报告
  • docker容器中elasticsearch配置跨域访问(elasticsearch-head插件访问不到es集群)
  • Echarts 的使用
  • Docker安装部署(详细版)
  • 【react hook】umi获取虚拟dom元素 并点击按钮滚动到对应元素位置
  • list深度拷贝转为JSON字符串,放到Redis
  • eclipse的离线汉化
  • ES学习笔记(12)--Symbol
  • Java 网络编程(2):UDP 的使用
  • Linux Process Manage
  • nodejs实现webservice问题总结
  • PaddlePaddle-GitHub的正确打开姿势
  • Python_OOP
  • Python打包系统简单入门
  • Python利用正则抓取网页内容保存到本地
  • SpingCloudBus整合RabbitMQ
  • 阿里云前端周刊 - 第 26 期
  • 理清楚Vue的结构
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 学习使用ExpressJS 4.0中的新Router
  • elasticsearch-head插件安装
  • ​2020 年大前端技术趋势解读
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (二)换源+apt-get基础配置+搜狗拼音
  • (一)80c52学习之旅-起始篇
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .“空心村”成因分析及解决对策122344
  • .a文件和.so文件
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net开发引用程序集提示没有强名称的解决办法
  • @property括号内属性讲解
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • []指针
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]