Почему корковые некоторые из моих мускатных вин выкатились?

Это много биткоин. Может быть, вы должны держать ваш кошелек в безопасности, потому что это выглядит как хак. Я имею в виду, что если у вас есть кошелек онлайн и кто-то находит часть с привчной, они могут украсть, вплоть до 100%.

+435
lathonez 24 нояб. 2022 г., 13:16:48
16 ответов

Когда процесс выполняет команду (с помощью вызова execve() системный вызов), его память стерта. Чтобы передать какую-то информацию через выполнение вызова execve() системные вызовы принимает два аргумента для этого: в переменной argv[] и параметре envp[] массивы.

Эти два массива строк:

  • аргумент argv[] содержит аргументов
  • параметре envp[] содержится в переменной окружения определений как строки в ВАР=значение формат (по Конвенции).

Когда вы делаете:

экспортировать секрет=значение; УМК "$секретно"

(здесь добавлены недостающие кавычки разложения по параметру).

Вы выполняете команду cmd с секретом (стоимость) передается в переменной argv[] и параметре envp[]. из argv[] будет ["УМК", "значение"] и параметре envp[] что-то вроде [..., "путь=/ОГРН:...", "дома=...", ..., "секрет=значение", "термин=в xterm", ...]. В качестве УМК не выполняет функции getenv("секрет") или эквивалент для получения значения секретного из этого секрет переменной окружения, поставив его в окружающей среде-это не полезно.

из argv[] , является общеизвестным фактом. Он показывает на выходе из ПС. параметре envp[] в настоящее время нет. На Linux, это показывает, что в файле/proc/пид/окру. Он показывает на выход зы тьфу на ОС семейства BSD (и с procps по-НГ, ПС на Linux), но только для процессов, запущенных с же эффективный идентификатор пользователя (и с более ограничения для битов setuid/описание GNU исполняемые файлы). Он может показать в некоторых журналах аудита, но эти журналы аудита должны быть доступны только администраторам.

Короче среды, которая передается в исполняемый файл предназначается, чтобы быть частным или, по крайней мере, о том, как частные, как во внутренней памяти процесса (который при определенных обстоятельствах другой процесс с соответствующими привилегиями может также открыть с помощью отладчика, например, а также могут быть сброшены на диск).

С переменной argv[] общеизвестно, что команда ожидает, что данные предназначены для секрет в командной строке нарушается дизайн.

Как правило, команды, которые должны быть в секрете, обеспечивает интерфейс для этого, как через переменную среды. Например:

IPMI_PASSWORD=секрет ipmitool -я Лан-у админ...

Или через специальный файловый дескриптор стандартного ввода как:

Эхо секрет | OpenSSL и ОГА -мимо стандартного ввода ...

(Эхо быть встроенный, его не видно в выводе ПС)

Или файл, как .netrc ПО для фтп и несколько других команд или

в MySQL --по умолчанию-дополнительно-файл=/некоторые/файла/с/паролями ....

Некоторые приложения, такие как завиток (и это тоже подход @meuh здесь) пытаются скрыть пароль, который они получили в переменной argv[] от чужих глаз (на некоторых системах путем перезаписи область памяти, где из argv[] строки были сохранены). Но это не очень помогает и дает ложное обещание безопасности. Что оставляет окно между вызова execve() и перезапись, где ПС еще покажет секрет.

Например, если злоумышленник знает, что вы используете скрипт делает завиток -U пользователь:somesecret протоколу HTTPS://... (например, в cron-задание), все, что он должен сделать, это выселить из кэша (много) библиотеки, завиток использует (например, выполнив Ш-с 'А=А;а :; у А=$В$С;сделано') таким образом, чтобы замедлить его запуска и даже делая очень неэффективно , пока команда grep 'завиток.*[-]у' в /proc/*/командной строки; у :; сделал достаточно, чтобы поймать этот пароль в моих тестах.

Если аргументы только так можно передать секрет команды, там еще могут быть некоторые вещи, которые вы могли бы попробовать.

На некоторых системах, включая старые версии Linux, только первые несколько байт (4096 на Linux 4.1 и раньше) строк в переменной argv[] могут быть запрошены.

Там, вы могли бы сделать:

(свдв -это "$(е %-4096s УМК)" УМК "$секретно")

И секрет будет скрыт, потому что это последние 4096 байт. Теперь люди, которые использовали этот метод должен сожалеть об этом теперь, так как Linux начиная с 4.2 уже не усекает список аргументов в файле/proc/пид/командной строки. Также обратите внимание, что это не потому, что ПС не будет показывать больше чем на столько-то байт из командной строки (как во FreeBSD, где, кажется, быть ограничена до 2048), что нельзя использовать тот же API ПС использует, чтобы получить больше. Такой подход является допустимым, однако в системах, где ПС - это единственный способ для обычного пользователя, чтобы получить эту информацию (например, когда API является привилегированным и ПС является использования setgid и setuid в того, чтобы использовать его), но это все еще, возможно, не в будущем есть.

Другой подход может быть, чтобы не сдать секрет в переменной argv[] но внедрить код в программу (используя отладчик GDB или $LD_PRELOAD взломать) до функции main() запускается, что вставляет секрет в переменной argv[] полученных от вызова execve().

С LD_PRELOAD, для некурящих, с setuid/описание GNU динамически скомпонованных исполняемых файлов на система GNU:

/* 
 * заменить ***** с секретом читать от FD 9
 * ССЗ -стены -спос -общая -о inject_secret.так inject_secret.с-ЛПНП 
 * LD_PRELOAD=/.../inject_secret.так ЦМД -п '*****' 9<<< секрет
*/
#определите _gnu_source
#включить <stdlib.ч>
#включить <строка.ч>
#включить <запустите.ч>
код #include <dlfcn.ч>

#определить заполнитель "*****"
статические чар секрет[1024];

инт __библиотеки libc_начало_основной(тип int (*основная) (тип int с char**, char*в*),
 АГДС,
 типа char **argv, которая,
 пустота (*инит) (недействительным),
 пустота (*Фини)(недействительным),
 пустота (*rtld_fini)(недействительным),
 пустота (*stack_end)){
 статический тип int (*real_libc_start_main)() = нуль;
 инт Н;

 если (!real_libc_start_main) {
 real_libc_start_main = функция dlsym(RTLD_NEXT, "__библиотеки libc_начать_основной");
 если (!real_libc_start_main) прервать();
}

 н = Читать(9, секрет, как sizeof(секрет));
 если (n > 0) {
 инт я;

 если (секрет[Н - 1] == '\п') секрет [- н] = '\0'; 
 Для (я = 1; я < АГДС; я++)
 если (чего strcmp(argv в[я], заполнитель) == 0)
 агду[я] = секрет;
}

 возвращение real_libc_start_main(основной, переменной argc, argv, которая, инит, Фини
 rtld_fini, stack_end);
}

Затем:

$ Оук -стены -спос -общая -о inject_secret.так inject_secret.с-ЛПНП
$ LD_PRELOAD=$ФРД/inject_secret.так что ПС '*****' 9<<< "-opid,аргументы"
 КОМАНДА ПИД 
 7659 /ОГРН/ЗШ
 8828 ПС *****

Ни в коем случае бы ПС показали ПС-opid,аргументы есть (-opid,аргументы быть секрет в этом примере). Обратите внимание, что мы заменяем элементы массива argv[] массив указателей, а не переопределение строки, на которые указывают эти указатели, который является, почему наши изменения не показывают в результатах ПС.

С помощью GDB, еще не установлен setuid/описание GNU динамически скомпонованных исполняемых файлов и на GNU систем:

ТМП=$(mktemp) && кот << ВФ > "$ТМП" &&
перерыв __библиотеки libc_начало_главный
команды 1
набор из argv[1]="-opid,аргументы"
далее
конец
запустить
ВФ

ГДБ -Н --партии-молчат --вернуть ребенку-результат -х "$ТМП" --аргументы ПС '*****'
РМ -Ф -- "$ТМП"

Еще с помощью GDB, а не-GNU специального подхода, который не полагаться на исполняемых файлах, динамически связаны или иметь отладочные символы и должны работать на любой бинарники под Linux, по крайней мере, может быть:

#! /Бен/ш -
# ГДБ+ш полиглот скрипт на замену "*****" аргументы с содержанием
# переменной секретной среды *после* для execve и перед вызовом
# главного исполняемого файла (функция).
#
# Использование: секрет=somesecret УМК --пароль*****'

если ':' - ':'
тогда
 # работает в ш
 # получить адрес начала исполняемого
старт=$(
 Значение lc_all=objdump -Ф С -- "$(команда -в -- "${1?}")" |
 СЕПГ -н 'с/^начальный адрес //п'
)
 [ -Н "$старт" ] || выход
 # повторно старпома себя с помощью GDB.
 старпома ГДБ -Н --партии-молчат --вернуть ребенку-результат -IEX по "набор \$начать = $Старт" -Х "$0" --аргументы "$@"
 выход 1
интернет
конец
# бег в GDB
перерыв *$начать
команды 1
 # Стек при запуске содержит:
 # АГДС и argv[0]... агду[АГДС-1] 0 параметре envp[0] параметре envp[1]... 0 argv[] и параметре envp[] строк
 набор $АГДС = *((инт*)$СП)
 набор $агду = &((типа char**)$СП)[1]
 набор $параметре envp = &($массива argv[$АГДС+1])
 набор $Я = 0
 в то время как $параметре envp[$я]
 # искать параметре envp[] строка начиная с "секретные=". Мы не можем воспользуйтесь strcmp()
 # здесь нет никакой гарантии, что отлаженная исполняемый такая
 # функция
 набор $е = $параметре envp[$я]
 если $е[0] == 'С' && \
 $Е[1] == 'е' && \
 $е[2] == 'с' && \
 $Е[3] == 'р' && \
 $е[4] == 'е' && \
 $е[5] == 'т' && \
 $е[6] == '='
 набор $секрет = &($е[7])
 # заменить секрет=ХХХ<нул> с испол=<нул>
 набор $е[5] = '='
 набор $е[6] = '\0'
 # не называя loop_break как это вызывает SEGV с моими версию GDB
конец
 набор $я = я + 1
конец
 если $секрет
 # теперь ищу из argv[] строк "*****" и заменить их
 # секрет, выявленных ранее
 набор $Я = 0
 хотя $я < $АГДС
 множестве $a = $агду[$я]
 если $a[0] == '*' && \
 долларов[1] == '*' && \
 долларов[2] == '*' && \
 долларов[3] == '*' && \
 долларов[4] == '*' && \
 $а[5] == '\0'
 набор $массива argv[$я] = $секрет
конец
 набор $я = я + 1
конец
конец
 # с помощью "продолжить" как "отстегнуть" вызывает SEGV с моими версию GDB.
далее
конец
запустить

Тестирование с статически слинкованный исполняемый файл:

$ Секрет=в/proc/самостоятельной/командной строки ./replace_secret busybox и кошки '*****' | ТР '\0' '\п'
как /bin/busybox и
кошка
*****

Если исполняемый файл может быть статичным, у нас нет надежного способа выделить память для того чтобы хранить тайну, поэтому мы должны сделать секрет из какого-то другого, что уже находится в памяти процесса. Вот почему Environ является очевидным выбором здесь. Мы также скрывать, что секрет ОКР ВАР процесса (путем изменения его в дверях=), чтобы избежать его утечки, если процесс решит свалить ее окружения по какому-то поводу или выполнить ненадежных приложений.

Что также работает на Solaris 11 (при условии, GDB и GNU binutils выступает установлены (возможно, вам придется переименовать objdump в gobjdump).

На FreeBSD (по крайней мере, архитектуру x86_64, я не уверен, что те первые 24 байта (которые превращаются в 16, когда ГДБ (8.0.1) является интерактивной, предполагая, что там может быть ошибка в GDB есть) в стеке), заменить АГДС и argv в определения:

установить это $argc = *((инт*)($СП + 24))
набор $агду = &((типа char**)$СП)[4]

(вам также может понадобиться, чтобы установить ГДБ пакет/порт в качестве версии, что в противном случае поставляется с системой древнее).

+999
RoRo Carter 03 февр. '09 в 4:24

Вы используете ~/приложения/ папки, а не /Приложения.

Попробуйте:

компакт-диск /приложений

А затем:

общ.

~ Означает дом, в котором находится /пользователей/пользователей/. Есть папка приложения пользователями, но это очень редко используется и для приложений, которые установлены только для определенных пользователей. Все стандартные приложения находятся в /приложения.

+936
Yogesh Mv 4 июн. 2023 г., 22:46:14

Я хочу заблокировать приложение Facebook на своем iPhone. Я заблокировал facebook.com В ограничения и каждого отдельного URL-адрес Facebook для сервера я могу найти - это прекрасно работает в Safari, но и открывать Facebook приложение и ничего не блокируется. Какой URL мне нужно заблокировать, чтобы это исправить?

Редактировать: я знаю, что школа фильтров как-то в состоянии сделать это, так что там должен быть URL-адрес..

+923
user15181 13 апр. 2015 г., 15:23:26

У меня консоль только для версии Debian (последний). Есть ли способ, чтобы обновить графический интерфейс пользователя без необходимости переустановки всей системы?

+888
AussieBunyip 9 авг. 2016 г., 13:24:13

У меня Samsung 10.1 2014, который в последнее время перестал узнавать карту в слот для карт SD. Карта распознается нормально на ПК, но на планшете ничего.

Видимо, некоторые из моих приложений, установленных самим это SD-карта. По крайней мере таково мое впечатление, все эти приложения теперь потеряли свою иконку по умолчанию, которая заменяется прозрачным по умолчанию значок Android с "СД" рядом с ним. Если я пытаюсь открыть их, я получаю уведомление в котором написано "приложение не установлено". Я ничего не знаю о том, как установить или перенести приложения на SD карту, так что я предполагаю, это было сделано автоматически приложение магазина Amazon, где все эти приложения были.

Сам Android не признать, что эти приложения устанавливаются. Впрочем, значки все еще там, и я предполагаю, что там должны быть какие-то следы от них до сих пор присутствует на устройство (не на SD карту). Я бы хотела избавиться от всего, что на удаление. Приложение Amazon заявил, что на устройстве, но не установлен на Amazon магазин приложений , но по какой-то причине, которая находится вне меня, в Amazon решили не выполнять любой способ, чтобы удалить приложение. Я никогда не знала, как ОС для удаления приложений до этого, как я всегда удалена непосредственно из магазина приложений, которые я установил его из. Так что поведение Амазонки загадочное для меня.

Я прочитал этот вопрос спрашивают, Как удалить , но ответы, которые не говорят о том, как сделать из Android непосредственно (который не будет работать для меня) написано, Как удалить приложения, которые не то, что я хочу. Когда я пытаюсь удалить, он говорит мне, что если я удаляю приложение, я потеряю его и выкупить его из магазина позже, если я хочу установить снова, это не то, чего я хочу.

Я думал о возможно попытке повторно установить приложение на устройство (хотя, не уверен, что он будет делать, поскольку она может понадобиться SD-карты нет!), а потом удалить, но приложение магазина Amazon не предусматривает каких-либо способ, чтобы установить приложение. Поскольку он думает, что она уже установлена, он обеспечивает только кнопка "Открыть", которая ничего не делает.

Как удалить остатки эти приложения с устройства?

+882
RoguePlanetoid 21 февр. 2010 г., 12:25:52

Если вы получаете эту ошибку, попробуйте:

судо apt-получить обновление

Затем снова попробовать это:

судо apt-получить установку ia32-библиотеки

Я просто сделал новую установку 12.04, что пакет все еще доступен в репозиториях. На самом деле, я получил эту ошибку сам, прежде чем я побежал обновления. После этого он работал нормально.

+845
hi henlo its me 17 дек. 2021 г., 23:08:54

Я провел исследование и предложение, но вдруг мой советник покинул университет. Они сказали, что я должна выбрать нового советника. Я знаю некоторые общие критерии о выборе консультанта. не могли бы вы перечислить некоторые конкретные вещи, которые меня касаются для того, чтобы достичь в лучшем случае. например, его научное обоснование еще важно?

П. С.: Он отличается от следующего вопроса, то есть об общем случае, а на наш вопрос, предполагал, что у нас есть "полу-решена исследований".

Зачем выбирать конкретное советник, имеющих общие интересы?

+744
taha mabrouk 6 нояб. 2019 г., 18:15:53

Есть конференция, случающуюся в Испании в конце апреля на основной стек программного обеспечения за $обычная работа, к которой я направлялся. Как гражданин Великобритании, это не вопрос визы-мудрый. Работать только хорошо бы бюджет для меня, чтобы принести своей команде из Индии в события, значит, я должен помочь им с получением шенгенской визы.

Моя компания не имеет представительств или присутствия в Испании. Затраты на поездку (авиабилеты, отели, оргвзнос, питание и т. д.) будут покрыты (по разным причинам) в Великобритании частью бизнеса для нас обоих. Поэтому я считаю, что мой индийский коллега должен какое-то письмо-приглашение, подтверждающее, что все расходы будут покрыты за них в компании.

Я спрашивал в офисе, но только шенгенская визовая они являются для индейцев, посетив наш офис в Варшаве, которые написаны по-польски, так что не особо полезна, тем более, что я не могу читать по-польски....

Есть ли указания на то, что я должен написать в письмо-приглашение? Например, кому оно должно быть адресовано, что он должен сказать о своей индийской коллегой, что он должен сказать о финансировании и т. д.?

В противном случае, я предполагаю, что письмо хочет быть напечатано на фирменном бланке и подписан кем-то, подходяще старший из головного офиса в Великобритании. Насчет языка, хотя - это может быть на английском, или мне нужно, чтобы пыль мой испанский словарь, а затем пригласить испанского другу за пиво + помочь мне написать это?

+534
Yousif Tareq 3 апр. 2014 г., 16:35:16

Надеюсь, кто-нибудь может помочь мне или, по крайней мере, заставить меня указал в правильном направлении. У меня есть экземпляр NAT на AWS, который обеспечивает исходящего трафика на хост в интернет. Это работает просто отлично. Что мне нужно сделать, это взять произвольный порт (позволяет использовать порт 26 В качестве примера) от хозяина и на машину НЭТ, перевести которые отправлялись от машины NAT на порт 25. Это правило, что я пытаюсь заставить работать:

в iptables -это POSTROUTING -Т физ. -о интерфейсе eth0 -П по tcp --dport 26 -й СНАТ --в 172.17.2.125:25

Правила на данный момент будет счастливо изменить IP-адреса, но оставляет исходящий порт без изменений.

Перенаправление будет счастливо изменить порт, но не изменит исходный IP (что бы не оставлять поле на правильный публичный IP).

Я думал об используя что-то типа pfSense или какой-то другой продукт брандмауэр, который я думаю, мог бы сделать это, но кажется, как Overkill за то, что кажется "простым". Я пробовал погуглить, как сумасшедший, но я, должно быть, погугли неправильные термины... я попробовал "прозрачный прокси", но это, кажется, не работает.

Обновление это немного

Узел = 172.17.1.125, исходящие SMTP-соединения через порт 26 Нац = 172.17.2.126 Назначения = 216.1.2.3 25 порт (стандартный порт SMTP)

Что нужно иметь

Узлов (внутренний) -> Нат -> пункт назначения

Чтобы это произошло правильно, NAT-сервер должен перевести порт 26 трафик в порт 172.17.2.126 25.

+511
JP Zoso 6 авг. 2021 г., 23:14:05

Мне нужно выполнить серию команд на удаленных системах, но возникли проблемы с Perl оставаться в системе. Я "не могу" использовать SSH или telnet команды, так как это учетная запись службы регистрации и не имеет пароля. Я пытаюсь это ниже, но программу SSH в систему и не выходит, пока я с CTL+D вне.

системы("СШ-qtt $сервер судо СР /опт/uc4sand/ОГРН/*.kstr /tmp/и песка.kstr; судо служба uc4sand стоп");
+491
SuperCabbage 26 июл. 2014 г., 06:26:37

удалить fglrx от Если вы установили его, а затем выполните этот ответ на гибридную графику

Проблему с перегревом вы столкнулись, скорее всего, идет по умолчанию, что обе видеокарты работают. Повернуться и перегрева должна быть история.

+465
Davide RM 16 апр. 2015 г., 13:17:03

Добавил как просили: раствор для жестких остальное монитор, потянув власти и их электропитанием ноутбука. Теперь все идеально:)

+415
userC 2 июл. 2018 г., 19:00:08

Я только что установил лампы-сервера пакет на новой установки Ubuntu 12.10. Все прошло нормально.

Я проверил на localhost/ и получил ожидаемый ответ.

Я создал файл index.php

Загрузка localhost/index.php работает нормально, но загрузка имя localhost/ нет. Здесь начался скачивания ~ файл.

Я пытался создать .файл htaccess содержать только эту строку в файле /var/www:для Индекс index.php DirectoryIndex index.html .цги

+322
Banana McBananaFace 4 июл. 2011 г., 15:23:14

У нас есть красный клен, что после роста на протяжении 35 лет внезапно развитым Моховым покровом на туловище. Это очень темный цвет, почти черный. Это опасная для здоровья наших деревьев?

+168
Jo Jo 26 нояб. 2021 г., 11:09:57

Почему это чувствовать себя так хорошо (не тупая боль), чтобы окружить или нажмите на заживление раны пальцем в близости, которая находится очень близко к границе раны?

Например, исцеление синяк чувствует себя так хорошо, когда прижимают и рана, когда обводится пальцем.

+163
qvisto 2 апр. 2023 г., 21:16:41

Опять же, как часто, это не значение на самом деле в переменной, но как переменная. На "эхо" в данном случае. ЗШ это эхо исполняет один Дэш как завершение параметры индикатора, поэтому он удаляется. Онлайн-руководство:

Обратите внимание, что для соответствия стандартам двойной дефис не прекращает режим обработки; вместо этого, он напечатан непосредственно. Впрочем, один штрих делает завершить режим обработки, поэтому первый черточки, возможно следующие варианты, не печатается, но все следующие за ним печатается в качестве аргумента. Единой черточки поведения отличается от других снарядов. Для более портативный способ печати текста см. В разделе функции printf, а для более контролируемым образом печатного текста в ЗШ, см. печать.

Итак, мы имеем:

ЗШ% Эхо -

ЗШ% Эхо-Н
-Н
ЗШ% ВДП=-
ЗШ% е "%з\п" "$ВДП"
-

См. также:

+96
sun ra 28 февр. 2013 г., 19:01:22

Показать вопросы с тегом