• XSS.stack #1 – первый литературный журнал от юзеров форума

передача аргумента в cmd через shellexecute

heybabyone

(L1) cache
Забанен
Регистрация
12.09.2020
Сообщения
872
Реакции
272
Пожалуйста, обратите внимание, что пользователь заблокирован
Пытаюсь выйти из lowil путем runas консоли cmd с передчаей пути до запуска проги.

ShellExecute(NULL, "runas", "cmd", "start notepad", 0, SW_SHOWNORMAL);

Для теста сделал так, но почему-то start notepad не работает как аругмент, ошибки не выдает, в чем трабл?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
cmd /c <команда>
Код:
ShellExecuteA(NULL, "runas", "cmd", "/c start notepad", NULL, SW_SHOWNORMAL);
спасибо, проблема решена, работает
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ребята, апну тему. Как узнать, что я имею админ права? Т.е. мое приложение должно чекнуть себя, что имею ли я админ права? IsUserAdmin не прокатывает. Дело в том, что прога запускает сама себя, и если запустилась успешно с админ правами, то она уже делает свои дела в рантайме
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Так попробуй:
C++:
BOOL IsElevated( ) {
    BOOL fRet = FALSE;
    HANDLE hToken = NULL;
    if( OpenProcessToken( GetCurrentProcess( ),TOKEN_QUERY,&hToken ) ) {
        TOKEN_ELEVATION Elevation;
        DWORD cbSize = sizeof( TOKEN_ELEVATION );
        if( GetTokenInformation( hToken, TokenElevation, &Elevation, sizeof( Elevation ), &cbSize ) ) {
            fRet = Elevation.TokenIsElevated;
        }
    }
    if( hToken ) {
        CloseHandle( hToken );
    }
    return fRet;
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Так попробуй:
C++:
BOOL IsElevated( ) {
    BOOL fRet = FALSE;
    HANDLE hToken = NULL;
    if( OpenProcessToken( GetCurrentProcess( ),TOKEN_QUERY,&hToken ) ) {
        TOKEN_ELEVATION Elevation;
        DWORD cbSize = sizeof( TOKEN_ELEVATION );
        if( GetTokenInformation( hToken, TokenElevation, &Elevation, sizeof( Elevation ), &cbSize ) ) {
            fRet = Elevation.TokenIsElevated;
        }
    }
    if( hToken ) {
        CloseHandle( hToken );
    }
    return fRet;
}
Спасибо Рел! Работает.

p.s. считай лайк от меня, а так ограничение.
 
fRet being what?

Так попробуй:
C++:
BOOL IsElevated( ) {
    BOOL fRet = FALSE;
    HANDLE hToken = NULL;
    if( OpenProcessToken( GetCurrentProcess( ),TOKEN_QUERY,&hToken ) ) {
        TOKEN_ELEVATION Elevation;
        DWORD cbSize = sizeof( TOKEN_ELEVATION );
        if( GetTokenInformation( hToken, TokenElevation, &Elevation, sizeof( Elevation ), &cbSize ) ) {
            fRet = Elevation.TokenIsElevated;
        }
    }
    if( hToken ) {
        CloseHandle( hToken );
    }
    return fRet;
}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх