|
本帖最后由 hlowld 于 2025-7-10 20:44 编辑
无需第三方工具实现批处理提权执行,据我所知通常是mshta.exe执行vbs脚本、wscript.exe执行临时vbs文件、wscript.exe执行临时js文件、powershell的Start-Process。
我一直在用以下这个,作者说明:有传入参数时也能得到管理员权限,且提权不会丢失参数。
fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
由于我一直是Administrators组用户,且关闭了UAC,所以一直没发现该方案其实无法成功,不把%*拆开,肯定不支持带空格的参数的。
自己写了一个powershell版的如下:
@ECHO OFF & PUSHD "%~DP0" & setlocal ENABLEDELAYEDEXPANSION
::goto :main
dir "c:\flag.txt" >nul 2>nul || (
echo dd>"c:\flag.txt"
set "args="
for %%a in (%*) do (
set "arg=%%a"
set "args=!args! \"!arg!\""
)
powershell -nop -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k %~dpnx0 !args!'"
exit /b
)
:main
echo "%~1"
echo "%~2"
echo "%~3"
pause
exit /b
该脚本支持参数带空格
执行 del c:\flag.txt>nul 2>nul & “d:\test\test.cmd” "1 2" "3 4",能看到其提权执行时获取的参数是2个,即 "1 2" 和 "3 4"
但不支持路径带空格
执行 del c:\flag.txt>nul 2>nul & “d:\test\te st.cmd” "1 2" "3 4" 会报错。
感觉差一点点就解决了,问AI,一通改,但就是解决不了。
不得已发个帖子请教。
非常感谢。
|
|