Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak usunąć salt + sh1
Forum PHP.pl > Forum > PHP
lipek80
Witam

Chciał bym się pozbyć zabezpieczenia salt z poniższego kodu. Chciał bym, aby można było się zalogować na stronie za pośrednictwem hasła które jest zapisane w bazie danych. Nie musi być zakodowane.


  1. <?php
  2.  
  3. define('AL_ADMIN', 256);
  4.  
  5. $AL_NAME = array(
  6. AL_ADMIN => 'Administrator'
  7. );
  8.  
  9. $REGISTER_DENY = array();
  10. $REGISTER_DENY[] = "root";
  11. $REGISTER_DENY[] = "admin";
  12. $REGISTER_DENY[] = "administrator";
  13. $REGISTER_DENY[] = "moderator";
  14. $REGISTER_DENY[] = "system";
  15. $REGISTER_DENY[] = "serwis";
  16.  
  17.  
  18. include(dirname(__FILE__) . '/../salt/salt.php');
  19.  
  20. function user_login($login = null, $password = null, $encrypted = false) {
  21.  
  22. global $db;
  23.  
  24. if (func_num_args() == 0) {
  25.  
  26. if (!my_login() || !my_password())
  27. return 'Nie odnaleziono informacji o koncie w bieżącej sesji';
  28.  
  29. $login = my_login();
  30. $password = my_password();
  31. } else
  32. $password = $encrypted ? $password : salt($password);
  33.  
  34. $user = $db->query("SELECT * FROM `users` WHERE LOWER(`login`) = LOWER('" . $db->escape_string($login) . "') AND `haslo` = '" . $db->escape_string($password) . "'")->fetch_assoc();
  35.  
  36. if (!empty($user)) {
  37. if (!empty($user['zablokowany']))
  38. return 'Konto zablokowane';
  39. else if (!empty($user['usuniety']))
  40. return 'Konto usunięte';
  41. } else
  42. return 'Niepoprawny login / hasło';
  43.  
  44. if (!my_id()) {
  45.  
  46. my_logintime(time());
  47. my_lastactivity(time());
  48.  
  49.  
  50. $set = array();
  51. $set[] = "`ostatnia_aktywnosc` = '" . datetimeS(my_lastactivity()) . "'";
  52.  
  53. $db->query("UPDATE `users` SET " . implode(',', $set) . " WHERE `id` = {$user['id']}");
  54. }
  55.  
  56. my_id($user['id']);
  57. my_login($user['login']);
  58. my_password($user['haslo']);
  59.  
  60. return true;
  61. }
  62.  
  63. function loggedin() {
  64.  
  65. if (user_login() === true)
  66. return true;
  67.  
  68. return false;
  69. }
  70.  
  71. function user_logout() {
  72.  
  73. if (loggedin()) {
  74. my_id(null);
  75. my_login(null);
  76. my_password(null);
  77. my_logintime(null);
  78. my_lastactivity(null);
  79. }
  80. }
  81.  
  82. function my_id($value = false) {
  83. /*
  84. * @params: (none/false): return value
  85. * @params: (null): unset value
  86. * @params: (mixed) value: set (int) value
  87. */
  88.  
  89. if ($value === null)
  90. unset($_SESSION['my_id']);
  91. else if ($value !== false)
  92. $_SESSION['my_id'] = (int) $value;
  93.  
  94. return isset($_SESSION['my_id']) ? $_SESSION['my_id'] : false;
  95. }
  96.  
  97. function my_login($value = false) {
  98. /*
  99. * @params: (none/false): return value
  100. * @params: (null): unset value
  101. * @params: (mixed) value: set value
  102. */
  103.  
  104. if ($value === null)
  105. unset($_SESSION['my_login']);
  106. else if ($value !== false)
  107. $_SESSION['my_login'] = $value;
  108.  
  109. return isset($_SESSION['my_login']) ? $_SESSION['my_login'] : false;
  110. }
  111.  
  112. function my_password($value = false) {
  113. /*
  114. * @params: (none/false): return value
  115. * @params: (null): unset value
  116. * @params: (mixed) value: set value
  117. */
  118.  
  119. if ($value === null)
  120. unset($_SESSION['my_password']);
  121. else if ($value !== false)
  122. $_SESSION['my_password'] = $value;
  123.  
  124. return isset($_SESSION['my_password']) ? $_SESSION['my_password'] : false;
  125. }
  126.  
  127. function my_logintime($value = false) {
  128. /*
  129. * @params: (none/false): return value
  130. * @params: (null): unset value
  131. * @params: (mixed) value: set value
  132. */
  133.  
  134. if ($value === null)
  135. unset($_SESSION['my_logintime']);
  136. else if ($value !== false)
  137. $_SESSION['my_logintime'] = $value;
  138.  
  139. return isset($_SESSION['my_logintime']) ? $_SESSION['my_logintime'] : false;
  140. }
  141.  
  142. function my_lastactivity($value = false) {
  143. /*
  144. * @params: (none/false): return value
  145. * @params: (null): unset value
  146. * @params: (mixed) value: set value
  147. */
  148.  
  149. if ($value === null)
  150. unset($_SESSION['my_lastactivity']);
  151. else if ($value !== false)
  152. $_SESSION['my_lastactivity'] = $value;
  153.  
  154. return isset($_SESSION['my_lastactivity']) ? $_SESSION['my_lastactivity'] : false;
  155. }
  156.  
  157. function my_level() {
  158.  
  159. if (!loggedin())
  160. return false;
  161.  
  162. global $db;
  163.  
  164. $r = $db->query("SELECT `level` FROM `users` WHERE `id` = " . my_id())->fetch_assoc();
  165.  
  166. return $r ? $r['level'] : false;
  167. }
  168.  
  169. function user_session() {
  170.  
  171. global $db;
  172.  
  173. if (!my_logintime() || !my_lastactivity())
  174. return false;
  175.  
  176. if (my_id()) {
  177. my_lastactivity(time());
  178. $db->query("UPDATE `users` SET `ostatnia_aktywnosc` = '" . datetimeS(my_lastactivity()) . "' WHERE `id` = " . my_id());
  179. } else
  180. return false;
  181.  
  182. return true;
  183. }
  184.  
  185. function get_user($id, $opts = null) {
  186.  
  187. $opts['where'][] = "`id` = '" . (int) $id . "'";
  188.  
  189. $r = get_user_list($opts);
  190.  
  191. return isset($r[0]) ? $r[0] : $r;
  192. }
  193.  
  194. function get_user_list($opts = null) {
  195.  
  196. $opts['select'][] = "*";
  197. $opts['from'][] = "`users`";
  198. if (empty($opts['order']))
  199. $opts['order'][] = "`id` DESC";
  200.  
  201. return get_db_data($opts);
  202. }
  203.  
  204. user_session();
  205. ?>
Wazniak96
Wystarczy nie podawać 3 parametru do funkcji user_login , a jeśli i to nie działa to skasuj linijkę 34.
lipek80
skasowałem 3cią zmienną
później linikę 34 i dalej bez efektu

czy hasło w bazie musi być zakodowane jako hs1 czy jako zwykłe hasło alfanumeryczne

edit:

Ustawiałem w bazie 3 rodzaje haseł:

-md5
-sh1
-(tekst)

żadne nie działa
timon27
A mógłbyś powiedzieć dlaczego chcesz obedrzeć kod z tak ważnej dla bezpieczeństwa funkcji?
lipek80
przejąłem administrację nad pewną stroną, a nie mam dostępu do panelu administratora.

Mam dostęp do bazy, do FTP ale co mi po tym jak panel admina jest zablokowany hasłem.

Chyba, ze jest jakiś sposób aby to obejśćquestionmark.gif
redeemer
Jak masz dostęp do bazy to ustaw po prostu nowe hasło.
johny_s
Wygeneruj sobie nowe hasło, algorytm znasz
lipek80
Jak ustawie nowe w Bazie to nic nie daje.
Czy może mi ktoś w miarę prosty sposób wytłumaczyć jak to najlepiej rozwiązać?


Cytat
johny_s Napisano Dzisiaj, 15:08
Wygeneruj sobie nowe hasło, algorytm znasz


Czy możesz mi powiedzieć jak wygenerować takie hasło?


Znalazłem coś takiego

http://online-code-generator.com/sha1-hash...tional-salt.php

czyli tak podaje swój klucz salt

przed lub po ?
czy wygenerowane hasło wpisuje do bazy?

Wykonałem:

Podałem salt wpisałem hasło a wygenerowany klucz md1 wpisałem do bazy danych. i niestety to nie działa.
Działanie wykonałem na kodzie z pierwszego posta.
johny_s
tworzysz sobie jakiś plik i w nim dodajesz
  1. include(dirname(__FILE__) . '/../salt/salt.php');
  2. echo salt('twoje_haslo');

i z palca aktualizujesz tabelke (oczywiscie przy zalozeniu ze ten salt jest jakis drętwy i nie korzysta przy okazji z bazy)
lipek80

To mój plik salt który był

  1. <?php
  2.  
  3. function salt($password) {
  4.  
  5. $salt = '9237356b46c0f53f71eb189b95c40ed1fa25a685';
  6.  
  7. return sha1(sha1($password) . $salt);
  8. }
  9.  
  10. ?>
johny_s
  1. echo sha1(sha1('twoje_haslo') . '9237356b46c0f53f71eb189b95c40ed1fa25a685');
lipek80
czy uzyłeś jakiegoś hasła zeby to wygenerować, troche się zmieszałem w temacie.

Co powinienem wpisać do bazy?
johny_s
do bazy w kolumnie haslo dla swojego usera wklejasz to co Ci wyświetli echo

a hasło to : twoje_haslo chyba ze zdefiniujesz sobie inne
lipek80
do bazy danych wpisałem

w pole haslo

"twoje_haslo"

plik salt.php wygląda tak jak poniżej

  1. <?php
  2.  
  3. function salt($password) {
  4.  
  5. $salt = '9237356b46c0f53f71eb189b95c40ed1fa25a685';
  6.  
  7. return sha1(sha1($password) . $salt);
  8. }
  9.  
  10.  
  11. ?>


I niestety to nie działa.

Stworzyłem plik log.php

  1. <?php
  2.  
  3. include(dirname(__FILE__) . '/../salt/salt.php');
  4. echo salt('twoje_haslo');
  5.  
  6. ?>



zwraca mi błąd:

Cytat
Warning: include(/public_html_v2/admin/../salt/salt.php) [function.include]: failed to open stream: No such file or directory in /public_html_v2/admin/log.php on line 3

Warning: include() [function.include]: Failed opening '/public_html_v2/admin/../salt/salt.php' for inclusion (include_path='.:/usr/share/p52:/usr/share/pear') in /public_html_v2/admin/log.php on line 3

Fatal error: Call to undefined function salt() in /public_html_v2/admin/log.php on line 4
johny_s
nie masz wpisywac do bazy 'twoje_haslo' tylko to co Ci się wyświetli z tego:
  1. echo sha1(sha1('twoje_haslo') . '9237356b46c0f53f71eb189b95c40ed1fa25a685');
lipek80
Już zadziałało


do stworzonego pliku log.php wkleiłem
  1. <?php
  2.  
  3. include(dirname(__FILE__) . '/../salt/salt.php');
  4. echo sha1(sha1('twoje_haslo') . '9237356b46c0f53f71eb189b95c40ed1fa25a685');
  5.  
  6. ?>


wygenerowało mi kod który wkleiłem do bazy

hasłem jest:

twoje_haslo

dziekuje bardzo za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.