管理系统开发使用示例格式化字符串漏洞和防护

添加时间:2019-06-26 22:12:15

来源:

浏览:

今天讲一下管理系统开发使用示例格式化字符串漏洞和防护,对于软件来说,安全是第一位的!


格式字符串是包含文本和格式参数的ASCII字符串。


例:


//带有格式字符串的语句

printf(“我的名字是:%s  n”,“Akash”);


//输出

//我的名字是:阿卡什

有几种格式字符串可以在C和许多其他编程语言中指定输出,但我们的重点是C语言。


格式字符串漏洞是一类利用易于避免的程序员错误的错误。如果程序员将攻击者控制的缓冲区作为参数传递给printf(或任何相关函数,包括sprintf,fprintf等),则攻击者可以执行对任意内存地址的写入。以下程序包含这样的错误:


filter_none

编辑

play_arrow


brightness_4

// A simple C program with format 

// string vulnerability 

#include<stdio.h> 

  

int main(int argc, char** argv) 

    char buffer[100]; 

    strncpy(buffer, argv[1], 100); 

  

    // We are passing command line 

    // argument to printf 

    printf(buffer); 

  

    return 0; 

由于printf具有可变数量的参数,因此必须使用格式字符串来确定参数的数量。在上面的例子中,攻击者可以传递字符串“%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p”并欺骗printf思考它有15个参数。它将天真地打印堆栈中的下15个地址,认为它们是它的参数:


$ ./a.out“%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p”

0xffffdddd 0x64 0xf7ec1289 0xffffdbdf 0xffffdbde(nil)0xffffdcc4 0xffffdc64(nil)0x25207025 0x70252070 0x20702520 0x25207025 0x70252070 0x20702520

在堆栈上大约10个参数,我们可以看到0x252070的重复模式 - 这些是我们在堆栈上的%ps!我们用AAAA开始我们的字符串以更明确地看到它:


$ ./a.out“AAAA%p%p%p%p%p%p%p%p%p%p”

AAAA0xffffdde8 0x64 0xf7ec1289 0xffffdbef 0xffffdbee(nil)0xffffdcd4 0xffffdc74(nil)0x41414141

0x41414141是AAAA的十六进制表示。我们现在有办法将任意值(在本例中,我们传递的是0x41414141)作为printf的参数传递。此时我们将利用另一种格式字符串功能:在格式说明符中,我们还可以选择特定的参数。例如,printf(“%2 $ x”,1,2,3)将打印2.通常,我们可以执行printf(“%$ x”)来为printf选择任意参数。在我们的例子中,我们看到0x41414141是printf的第10个参数,所以我们可以简化我们的string1:


$ ./a.out'AAAAA%10 $ p'

AAAA0x41414141

防止格式字符串漏洞


始终将格式字符串指定为程序的一部分,而不是输入。大多数格式字符串漏洞通过将“%s”指定为格式字符串而不使用数据字符串作为格式字符串来解决

如果可能,请将格式字符串设为常量。将所有变量部分提取为调用的其他参数。一些国际化图书馆很难做到

如果无法实现上述两种做法,请使用Format_Guard等防御措施。设计时很少见。也许是一种继续使用遗留应用程序并降低成本的方法。增加对第三方应用程序安全的信任


系统管理软件最需要的就是安全。


用户名 Name
评论 Comment

管理系统  相关内容

——
20

2020-10

Node.js和React.js之间的区…

Node.js: Node.js是一个开放源代码和跨平台的运行时环境,用于在浏览器外部执行JavaScript代码。您需要记住,NodeJS不是框架,也不是编程语言。大多数人感到困惑,并且理解它是框架还是编程语言。我们经常使用Node.js构建后端服务,例如Web App或Mob… [了解更多]

20

2020-10

React Native和Flutter…

在本文中,我们将讨论两个框架,这两个框架在相当长的一段时间内都得到了很好的维护,并超越了这些框架,它们分别是React Native和Flutter。考虑到在移动应用程序开发方面投入的大量技能,时间和金钱,如今的公司需要一种更快的方法来制作应用程序。另外,要编写本机应用程序,您需… [了解更多]

22

2020-09

交通运输业务支撑平台解决方案

交通运输业指国民经济中专门从事运送货物和旅客的社会生产部门,包括铁路、公路、水运、航空等运输部门。它是国民经济的重要组成部分,是保证人们在政治、经济、文化、军事等方面联系交往的手段,也是衔接生产和消费的一个重要环节。在现代社会中,运输发展的水平已经成为了一个国家发达水平和人类文明… [了解更多]

22

2020-09

商贸零售OA协同办公管理系统解决方案

零售企业(百货商店、折扣商店、大型食品店、药店和专业商店等)的管理通常包括商品采购、店铺作业、人事、财务、市场营销这五个方面的组织、计划、指挥和控制活动,有效的企业资源规划则是其中最重要的内容。随着信息产业的飞速发展,信息化管理已经引入并应用到各行业管理领域尤其是对于零售业。企业… [了解更多]

28

2020-06

CRM客户关系管理系统包含功能模块

客户管理主要包括功能客户基础信息,客户分配等,员工可修改客户资料,领导可对客户资料进行追溯沟通记录客户沟通记录,自动记录客户沟通过程中产生的语音和文字,便于查询微信沟通客户在微信中与员工的沟通记录,可自动记录到系统之中,提高员工的自我管理工作进度不同业务有不同流程,将工作进度即时… [了解更多]

联系我们

/ CONTACT US

地 址:成都市人民南路四段成科西路三号

邮政编码:610000

电 话:18215660330

传 真:18215660330

手机:18215660330

邮 箱:179001057@qq.com

投诉邮 箱:18215660330

姓名Name
标题Title
邮 箱Emali
联系电话Tel
内容Content