弧注入 return to libc(返回C函数标准库攻击)

本文通过一个具体的弧注入实例,详细阐述了如何在Windows环境下利用return to libc技术,在不写入可执行代码的情况下,调用系统库函数实现攻击。主要内容包括理解函数调用栈帧变化、构造弹窗功能的栈帧,并展示了如何构造连续调用函数的栈帧布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看到的一个弧注入的题目,了解一下原理

首先弧注入就是在不写入任何可执行代码的情况下注入程序,调用原有的库函数,达到攻击的目的,在Linux下使用较多,这次以windows为例

源程序

#include <stdio.h>
#include <windows.h>
#include <string>
#define PASSWORD "1234567"
int verify_password (char *password)
{
	int authenticated;
	char buffer[44];
	authenticated=strcmp(password,PASSWORD);
//	strcpy(buffer,password);//over flowed here!	
	memcpy(buffer,password,150);//over flowed here!	

	return authenticated;
}
main()
{p
	int valid_flag=0;
	char password[1024];
	FILE * fp;
	LoadLibrary("user32.dll");//prepare for messagebox
	if(!(fp=fopen("password.txt","rw+")))
	{
		exit(0);
	}
	fscanf(fp,"%s",password);
	valid_flag = verify_password(password);
	if(valid_flag)
	{
		printf("incorrect password!\n");
	}
	else
	{
		printf("Congratulation! You have passed the verification!\n");
	}
	fclose(fp);
}

因为strcpy有00字符串结尾标志的限制,所以使用memcpy函数直接拷贝内存

实验目的是调用messageboxA函数实现弹窗功能

先是函

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值