Linux c bronk.c

33 篇文章 0 订阅
/* brenken.c */


#include <stdlib.h>
#include <stdio.h>
#include <string.h>


char global[5];


int brenken(void)
{
	char * dyn;
	char local[5];


	/*First ,overwrinte a buffer just a little bit*/
	dyn = malloc(5);
	strcpy(dyn,"12345");
	printf("1: %s\n",dyn );
	free(dyn);


	/*Now overwrite the buffer a lot*/
	dyn = malloc(5);
	strcpy(dyn,"12345678");
	printf("2: %s\n",dyn);


	/*Wall past the beginning of a malloced local buffer */
	*(dyn - 1) = '\0';
	printf("3: %s\n",dyn );
	/*note we didn't free the pointer !*/


	/*Now go after a local variable */
	strcpy(local,"12345");
	printf("4: %s\n",local );
	local[-1] = '\0';
	printf("5: %s\n",local );


	/*Finally , attack global date space */
	strcpy(global,"12345");
	printf("6: %s\n", global);


	/*And write over the space before the global buffer */
	global[-1] = '\0';
	printf("7: %s\n",global );


	return 0;
}
int main(void)
{
	return brenken();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值