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

添加时间: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

管理系统  相关内容

——
26

2019-06

我们软件公司基于Web的登录自动暴力破解

暴力攻击的工作原理是计算可能构成密码的每种可能组合并对其进行测试以查看密码是否正确。随着密码长度的增加,平均而言,找到正确密码的时间量呈指数级增长。这意味着通常可以很快发现短密码,但更长的密码可能需要数十年。… [了解更多]

26

2019-06

某石油国企集团计量设备信息化管理系统

依托GMMS系统、生产数据平台,结合现场采集终端、通信网络,实现对计量设备的信息化管理。通过本系统可实时监控计量设备的基础静态信息、运行状态、周期检定情况。同时可以利用本系统进行计量巡检过程指导并监管员工,及时发现、处理计量设备设施运行中发生的异常及隐患,提高计量管理水平。… [了解更多]

26

2019-06

某油气工程建设监理有限公司项目监理系统

实现了监理部及其它相关部门工作人员对工程监理工作流程和需求的了解,统一进行网络化信息传递与信息共享。以工程监理工作的开展为指导,完成了公司管理部门和各监理项目、监理工程的数据库连接,完善了设备管理、人员管理、项目监理资料管理,实现了项目监理工作的报审信息化流程管理目标。… [了解更多]

联系我们

/ CONTACT US

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

邮政编码:610000

电 话:18215660330

传 真:18215660330

手机:18215660330

邮 箱:zzjfuture@gmail.com

投诉邮 箱:18215660330

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