Windows Token九種權??限的利用利用分別是怎么樣的
在Windows操作系統中,Token是分(fen)別一種用于表示訪(fǎng)問(wèn)權限的對象,Token權限可??以分為兩類(lèi):對象權限???(如讀取、種權寫(xiě)入、利用修改等)和系統權限(如管理員、分別用戶(hù)等),種權本文將詳細介紹Windows To(′?`)ken的利用九種權限及其利用方法。
1、分別生成憑據??(′_`)
要使用Token權限,種權首ヽ(′▽?zhuān)?ノ先需要創(chuàng )建一個(gè)訪(fǎng)問(wèn)令牌,利用訪(fǎng)問(wèn)令牌是分別由用戶(hù)名和密碼生成的一組安全憑據,可以使用以下命令生成憑據:
net user <用戶(hù)名>???; <密碼> /add
為了提高安全性,利用可以使用數字簽名證書(shū)對訪(fǎng)問(wèn)令牌進(jìn)行加密,分別需要從證書(shū)頒發(fā)機構(CA)購買(mǎi)一個(gè)數字簽名證書(shū),并將其導入到用戶(hù)的計算機上,導入證書(shū)的命令如(╯°□°)╯下:
certutil -addstore -f "<證書(shū)存儲路徑>" "<證書(shū)文件路徑>"
3、生成訪(fǎng)問(wèn)令牌
使用以下命令生成訪(fǎng)問(wèn)令牌:
runas /user:<用戶(hù)名> "%Programヽ(′?`)ノFiles%Windows Kits10binNETFX 4.6.1 Toolsx86fxgentoken.exe" /grant:<用戶(hù)名>:<密碼> /out:<訪(fǎng)問(wèn)令牌文件路徑> /tbn:<訪(fǎng)問(wèn)令牌名稱(chēng)> /tr=<請求協(xié)議> /ru=<請求URL> /rl=<請求資源> /rn=&l(′?_?`)t;返回資源> /rp=<返回路徑> /rd=<返回數據> /rf=<返回格式> /rq=<請求查詢(xún)字符串> /rm=<請求消息??正文>(′ω`) /rt=<返回時(shí)間> /rue=<返回編碼> /rce=<返回壓縮編碼> /rcv=<返回驗證碼> /rct=<返回內容類(lèi)型> /rdc=<返回數據編碼>?? /rdb=<返回數據二進(jìn)制格式> /rdf=<返回數據格式> /rdp=<返回數據指針> /rdl=<返回數據長(cháng)度> /rds=<返回數據大小>??; /rdw=<返回數據寬??度]&q??uot;
1、ShellExecuteEx函數
ShellExec(′▽?zhuān)?uteEx函數可以用于執行一個(gè)程序或打開(kāi)一個(gè)文檔,通過(guò)設置SHELLEXECUTEINFO結構體的dwFlags參數,可以將Token權限傳遞給ShellExecuteEx函數,以下代碼演示了如何使用ShellExecuteEx??函數打開(kāi)一個(gè)包含Token權限的文檔:
include <wind(???)ows.h>include <iostream>int main(){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, si??z??eof(pi)); // 創(chuàng )建一個(gè)包含Token權限的文檔模板字符串 wchar_t* do??cumentTemplate = L"%%windir%??%system32\calc.exe"; wchar_t commandLine[MAX_PATH]; swprintf(commandLine, MAX_PATH, L""%s"", documentTemplate); // 將T(⊙_⊙)oken權限傳遞給ShellEx(╬?益?)ecuteEx函數 BOOL result = ShellExecuteExW(&si, L"open='open'", commandLine, NULL, NULL, SW_SHOWNORMAL, NULL); if (result) { std::cout <<?? "成功打開(kāi)文檔" <(′ω`*)< std::endl; } else { std::cout << "打開(kāi)文檔失敗,錯誤代碼:" << GetLastError() << std::endl;( ?▽?) } return 0;}2、Windows API函數
除了使用C++標準庫中的ShellExecuteEx函數外,還(hai)可以使用Windows API函數來(lái)執行具有Token權限的操作,以下代碼演示了如何使用Shell??(′?_?`)ExecuteA函數打開(kāi)一個(gè)包含Token權限的文檔:
include <windows.h>include <iostream>inヽ(′ー`)ノclude <string>include <vector>include <shlobj.h> // ShellExecuteExA函數所在的頭文件pragma comment(lib, "(╬?益?)shell32.lib") // 需要鏈接shell32.lib庫文件以使用ShellExecuteExA函數pragma comment(lib, "(′▽?zhuān)?ole32.lib") // 需要鏈??接ole32.lib庫文件以使用CoTaskMemFree函數和IStream接口類(lèi)庫文件以使用I(′_ゝ`)Stream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口ヽ(′▽?zhuān)?ノ類(lèi)庫文件以使用IStream接口類(lèi)庫文ヽ(′ー`)ノ件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用??IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStreamヽ(′?`)ノ接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以(?Д?)使用IStream接口類(lèi)庫文??件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStrea(′;ω;`)m接ヾ(′ω`)?口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IS???tream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口ヾ(^-^)ノ類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件??以(yi)使(shi)用IStream接ヾ(^-^)ノ口類(lèi)庫文件以使用IStrea??m接口類(lèi)庫文件以使用IStrea??m接口類(lèi)庫文件以使用(yong)IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IS( ?▽?)tream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用IStream接口類(lèi)庫文件以使用我