无忧启动论坛
标题:
求支持路径和参数带空格的批处理提权执行脚本
[打印本页]
作者:
hlowld
时间:
7 天前
标题:
求支持路径和参数带空格的批处理提权执行脚本
本帖最后由 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,一通改,但就是解决不了。
不得已发个帖子请教。
非常感谢。
作者:
hlowld
时间:
7 天前
本帖最后由 hlowld 于 2025-7-11 16:10 编辑
自己解决了,最终版如下,放批处理开头
@ECHO OFF & PUSHD "%~DP0" & setlocal ENABLEDELAYEDEXPANSION
REG QUERY "HKU\S-1-5-19" >nul 2>nul || (
set "args=" & for %%a in (%*) do (set "arg=%%a" & set "args=!args! \"!arg!\"")
powershell -nop -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c \""""%~dpnx0""" !args!\"'" & exit
)
能实现提权执行(弹UAC对话框),提权执行时,能获取到原来的参数。
支持路径中有空格,支持参数中有空格
例如开了UAC的系统中执行 "d:\te st\test final.cmd" "1 2" "3 4",会弹UAC对话框,允许后,会以管理员权限运行,且得到的参数是2个,"1 2"和"3 4"
作者:
YWFhYmJi
时间:
7 天前
powershell -nop -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k \""\""%~dpnx0"\" !args!"\"'"
但是这样参数带单引号还是会有问题。
作者:
handsome_xiang
时间:
6 天前
感谢分享!
作者:
szwp
时间:
6 天前
无需写入临时文件,试试向作者反馈
作者:
guong
时间:
6 天前
来了解了
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3