首页 > 系统相关 >Windows黑客编程之提升进程令牌权限

Windows黑客编程之提升进程令牌权限

时间:2023-02-25 11:13:30浏览次数:43  
标签:tokenPrivileges 令牌 return ShowError Windows 黑客 FALSE bRet

描述

  • 利用AdjustTokenPrivileges提升进程的令牌访问权限

代码

外层调用

#include "stdafx.h"
#include "AdjustToken.h"

int _tmain(int argc, _TCHAR* argv[])
{
	if (FALSE == EnbalePrivileges(::GetCurrentProcess(), SE_DEBUG_NAME))
	{
		printf("Enbale Privileges Error!\n");
	}

	printf("Enbale Privileges OK!\n");
	system("pause");
	return 0;
}

里层实现

  • 获取当前进程令牌
  • 根据要提升的令牌名查询对应Luid
  • 调用AdjustTokenPrivileges提升令牌权限
  • 根据GetLastError函数返回值判断是否完成提升
#include "stdafx.h"
#include "AdjustToken.h"

void ShowError(char* pszText)
{
	char szErr[MAX_PATH] = { 0 };
	::wsprintf(szErr, "%s Error[%d]\n", pszText, ::GetLastError());
	::MessageBox(NULL, szErr, "ERROR", MB_OK);
}

BOOL EnbalePrivileges(HANDLE hProcess, char* pszPrivilegesName)
{
	HANDLE hToken = NULL;
	LUID luidValue = { 0 };
	TOKEN_PRIVILEGES tokenPrivileges = { 0 };
	BOOL bRet = FALSE;
	DWORD dwRet = 0;

	bRet = ::OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken);
	if (FALSE == bRet)
	{
		ShowError("OpenProcessToken");
		return FALSE;
	}

	bRet = ::LookupPrivilegeValue(NULL, pszPrivilegesName, &luidValue);
	if (FALSE == bRet)
	{
		ShowError("LookupPrivilegeValue");
		return FALSE;
	}

	tokenPrivileges.PrivilegeCount = 1;
	tokenPrivileges.Privileges[0].Luid = luidValue;
	tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

	bRet = ::AdjustTokenPrivileges(hToken, FALSE, &tokenPrivileges, 0, NULL, NULL);
	if (FALSE == bRet)
	{
		ShowError("AdjustTokenPrivileges");
		return FALSE;
	}
	else
	{
		dwRet = ::GetLastError();
		if (ERROR_SUCCESS == dwRet)
		{
			return TRUE;
		}
		else if (ERROR_NOT_ALL_ASSIGNED == dwRet)
		{
			ShowError("ERROR_NOT_ALL_ASSIGNED");
			return FALSE;
		}
	}
	return FALSE;

}

结果

  • 管理员权限运行程序,成功获得SE_DEBUG_NAME令牌权限

标签:tokenPrivileges,令牌,return,ShowError,Windows,黑客,FALSE,bRet
From: https://www.cnblogs.com/z5onk0/p/17153977.html

相关文章

  • 信息安全之windows服务器的基线安全(等保要求)
    windows服务器的基线安全(等保要求参考)下图是需要做基线配置的选项备注:具体都已经贴出来了,按照这个参考可以达标合格,有部分需要人工现场核实确认,这个要根据具体环境进行操......
  • Windows下QT生成的程序默认以管理员身份运行
    只需要在工程文件.pro中添加下面这行:QMAKE_LFLAGS+=/MANIFESTUAC:\"level=\'requireAdministrator\'uiAccess=\'false\'\" 生成的exe就会带上盾牌标志,双击就以管......
  • 信息安全之基线管理与安全配置—Windows安全配置
    一、Windows安全配置简介二、账户配置根据需求可以进行相关配置(里面有说明)1、密码策略  密码最短期限:意思就是密码更改后,多少天内能再次更换密码2、用户权......
  • Windows黑客编程之内存直接加载运行
    描述编写一款PE加载器,用来将dll和exe文件加载到内存中并运行假设程序需要动态调用dll,内存加载运行技术可以把这些dll作为资源插入自己的程序中,直接在内存中运行即可,不必......
  • Windows黑客编程之突破Session 0隔离创建用户进程
    描述通过CreateProcessAsUser函数,在一个服务进程中创建用户进程,实现ui交互准备知识CFFExplorer:PE查看器,可查看PE文件的导入导出表等信息Windows窗口回调Windows......
  • windows 10系统安装
    windows10系统安装步骤一备份个人重要文件到其他地方步骤二复制:ed2k://|file|cn_windows_10_enterprise_x64_dvd_6846957.iso|4162242560|3F657E387CD65FE7BA69DACAA......
  • 在Windows Server上安装typecho(基于IIS)
    TypechoTypecho是由type和echo两个词合成的,来自于开发团队的头脑风暴。Typecho基于PHP5开发,支持多种数据库,是一款内核强健﹑扩展方便﹑体验友好﹑运行流畅的轻量级开源博客程序......
  • SkeyePlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别 (2)
    SkeyePlayerRTSPwindows播放器支持D3D和GDI两种渲染方式,其中D3D支持格式如下:DISPLAY_FORMAT_YV12DISPLAY_FORMAT_YUY2DISPLAY_FORMAT_UYVYDISPLAY_FORMAT_......
  • windows常用bat分享
    单运行jarjava-jarxxx.jar执行依赖包运行jarlib文件夹和jar同级java-jar-Dloader.path="lib/"xxx.jar设置编码运行jar设置控制台编码为utf-8chcp65001java......
  • Windows防火墙无法更改某些设置。 windows 7
       Win7更改防火墙提示“Windows防火墙无法更改某些设置”怎么办?最近一位Win7用户想要更改防火墙的设置,结果系统跳出提示:“Windows防火墙无法更改某些设置,错误代码......