Автор:
Всем доброго времени суток. вот в воскресенье столкнулся ( в очередной раз ) с такой фишкой( и решил осветить этот вопрос, т.к. тут в основном люди балующиеся программированием, причем кое кто еще и защиту в программы встраивает:
D25A::73 73 04 4C¦65 66 74 02¦64 03 54 6F¦70 02 20 00:ss.Left.d.Top...
D26A::00 09 54 44¦61 74 61 62¦61 73 65 03¦44 62 31 09:..TDatabase.Db1.
D27A::41 6C 69 61¦73 4E 61 6D¦65 06 06 63¦72 61 63 65:AliasName..crace
D28A::72 0C 44 61¦74 61 62 61¦73 65 4E 61¦6D 65 06 06:r.DatabaseName..
D29A::43 61 72 64¦44 42 0B 4C¦6F 67 69 6E¦50 72 6F 6D:CardDB.LoginProm
D2AA::70 74 08 0E¦50 61 72 61¦6D 73 2E 53¦74 72 69 6E:pt..Params.Strin
D2BA::67 73 01 06¦0F 55 53 45¦52 20 4E 41¦4D 45 3D 70:gs...USER NAME=p
D2CA::72 6F 62 61¦06 0A 50 41¦53 53 57 4F¦52 44 3D 61:roba..PASSWORD=a
D2DA::00 0B 53 65¦73 73 69 6F¦6E 4E 61 6D¦65 06 07 44:..SessionName..D
D2EA::65 66 61 75¦6C 74 04 4C¦65 66 74 02¦38 03 54 6F:efault.Left.8.To
D2FA::70 02 20 00¦00 06 54 51¦75 65 72 79¦05 71 70 61:p.....TQuery.qpa
Из этого дампа видно что программа обращается к базе данных "CardDB" ( имя ODBC ) с альясом "cracer" ( ярлык для обращения к базе BDE ). Имя пользователя (для доступа к серверу БД, в данном случае был Interbase) "proba" пароль "a".
Надо заметить что пароль SYSDBA был изменен чтобы к серверу не мог обратиться посторонний
В результате заходим в Interbase, находим таблицу где хранятся пользователи программы и подсматриваем пароль!
В случае зашифрованного пароля, в аксесе я скопировал строку из базы предыдущей версии программы, где пароль админа мне был известен и заменил запись в таблице базы от новой версии
И вот мы уже можем админить прогу или посмотреть данные в БД.
Все выше сказанное так же зачастую верно для программ написаных без использования BDE (например на MS Visual C++/Basic) только там пароль админа или пользователя сервера БД находится не рядом со словом "Alias", а например рядом со словом "connect" - ведь по большому счету через ODBC просто пропускается запрос и он частенько в чистом или почти чистом виде лежит в коде, что можно увидеть воспользовавшись любым дампвьювером. Так что шифруйте пароли в своих программах перед помещением их в поля интерфейс-классов БД или передачей параметром в функции connect, если хотите чтобы кто-то имел трудности с несанкционированным обращением к вашим данным.
Например:
вместо
connectToDatabase("mydb","admin","pass");
сделайте хотябы:
char pass[5];
pass[0] = "p";
pass[1] = pass[0] - 15;
pass[2] = pass[1] + 18;
pass[3] = pass[2] + 0;
pass[4] = 0;
connectToDatabase("mydb","admin",pass);
Комментарии:
- said...
-
1. пароль закрытый таким образом можно вытащить в отладчике при просмотре что-же передается в функцию коннекта.
2. Есть у меня подозрение (тесно связанное с надеждой на его правдивость) что все данные, которые передаются в библиотеки можно отловить поставит break на вызов этих библиотек.
3. Большинство СУБД ИМХО при удаленном коннекте передает пароль в открытом виде. Правда Oracle точно не так поступает :( - said...
-
Ну, mysql по сети гонит шифрованный пароль. Точнее, даже хэш, если я правильно помню. А вот локальный вызов (от клиента до драйвера) - тут, да, обычно всё открыто в том или ином смысле.
- said...
-
А Оракл делает так:
1) Клиент отправляет имя пользователя
2) Сервер выдает случайное число криптованное на основе Hash-а от пароля пользователя
3) Клиент зная правильный пароль получает число сгенерированное сервером
4) Этим числом криптуется пароль и отправляется на сервакНу как?
- said...
-
данный пример привел просто как пример - во первых функцию можно по ординалу вызывать а не по имени, имена вообще убить в dll, шифровать все имя, базу, пароль, причем не таким маразматичным способом, применить паковку экзешника кстати
- said...
-
просто вскрыть базу таким способом не занимает больше 2-х 3-х частов даже у таких контор как Mercedess, VW Audi Group и иже с ними.
Читайте также
Последние новости
План занятий
Обучение детей от года до 3 лет плаванию, как правило, проходит в три этапа. На первом этапе ребенок должен адаптироваться к воде, избавиться от страха перед глубиной, неизвестной средой. Намного проще дети привыкают к бассейну, где есть бортики, вода теплая и прозрачная. Чуть сложнее дети адаптируются к открытым водоемам с темной и прохладной ...Читать далее »
Гимнастика от 2 лет до 2 лет 6 месяцев
1. Самостоятельная ходьба. 2. Бег вдогонку за взрослым или к взрослому в разном темпе. 3. Руки вверх, потянуться – «деревья большие большие», развести руки в стороны. 4. Ходьба по доске, приподнятой над полом на 15–20 см. 5. Приседания. 6. Подъем туловища с опорой на ладони в положении лежа на животе. 7. Хлопк...Читать далее »
Проблема: ожоги, ушибы, травмы
Немного повзрослев, ребенок начинает интересоваться источниками огня, что чревато ожогом. При незначительном ожоге необходимо поврежденный участок тела поместить под холодную проточную воду, а затем обработать антиожоговым аэрозолем. В период выздоровления применяют массаж, который способствует улучшению лимфо– и кровотока. В резуль...Читать далее »
Проблема: плоскостопие
Когда ребенок начинает ходить, его первые шаги могут быть омрачены плоскостопием. К сожалению, если эта болезнь наследственная, то волнения вполне обоснованны. И здесь без посещения детского врача ортопеда не обойтись. Его рекомендации относятся к укреплению подошвенного свода стопы вашего ребенка. Костная структура стопы ребенка ...Читать далее »
Рефлекторные движения
Рефлекторные гимнастические упражнения, В основе которых лежат врожденные двигательные рефлекторные реакции, проводятся первые три пять месяцев жизни ребенка, когда еще не утрачены безусловные двигательные рефлексы – «автоматическая походка», ладонно ротовой рефлекс, хоботковый рефлекс, сохранение равновесия, защитно оборонительные рефлексы. Рефлекторные гимнасти...Читать далее »
Техника выполнения: растирание
Прямолинейное растирание Выполняется концевыми фалангами одного или нескольких пальцев. Движение проводится прямолинейно одной рукой или обеими, иногда с отягощением. Круговое растирание Проводится с помощью круговых движений концевыми фалангами одного или нескольких пальцев. Кисть располагается с опорой на основании ладони, а манипуляции выполняют в сторону мизинца одной рук...Читать далее »
Проблема: пупочная грыжа
Пупочная грыжа – это патологическое состояние, в котором через несколько расширенное пупочное кольцо происходит выпячивание брюшины, сальника и даже кишечника. Причина заболевания следующая: вследствие дефекта передней брюшной стенки и пупочного кольца проявляется округлое или овальное выпячивание. Чаще факторами, провоцирующими повышение внутрибрюшного давления, являются кашель, запоры ...Читать далее »
