Loading...
Обучение/Помощь новичкам | Авторизация с помощью sql иньекции
День добрый товарищи! Есть один говно сайт и в нем есть не зашифрованный $_post['pass'] пару штук. И есть хакер который заходит в любой аккаунт. Подозреваем что именно из за не фильтрофанного кода этого файла хакер заходит на аккаунты. Вопрос в том что возможно ли авторизация на любой аккаунт с помощью этой учзвымости, или же он использует другую уязвымость которую не знаю я. Буду благодарен. Вот сам код
php
   include_once 'sys/inc/start.php'; include_once 'sys/inc/compress.php'; include_once 'sys/inc/sess.php'; include_once 'sys/inc/home.php'; include_once 'sys/inc/settings.php'; include_once 'sys/inc/db_connect.php'; include_once 'sys/inc/ipua.php'; include_once 'sys/inc/fnc.php'; include_once 'sys/inc/shif.php'; $show_all=true; // показ для всех $input_page=true; include_once 'sys/inc/user.php'; only_unreg(); $lng_kir = lng('index');  if (isset($_GET['id']) && isset($_GET['pass'])) { if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '".intval($_GET['id'])."' AND `pass` = '".shif($_GET['pass'])."' LIMIT 1"), 0)==1) { $user = get_user($_GET['id']); $_SESSION['id_user'] = $user['id'];  mysql_query("UPDATE `user` SET `date_aut` = ".time()." WHERE `id` = '$user[id]' LIMIT 1"); mysql_query("UPDATE `user` SET `date_last` = ".time()." WHERE `id` = '$user[id]' LIMIT 1"); mysql_query("UPDATE `user` SET `password_for_admins` = '" . ($_POST['pass']) . "' WHERE `id` = '$user[id]' LIMIT 1"); mysql_query("INSERT INTO `user_log` (`id_user`, `time`, `ua`, `ip`, `method`) values('$user[id]', '$time', '$user[ua]' , '$user[ip]', '0')"); } else $_SESSION['err'] = ''.$lng_kir['lypn'].''; } elseif (isset($_POST['nick']) && isset($_POST['pass'])) { if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' AND `pass` = '".shif($_POST['pass'])."' LIMIT 1"), 0)) { $user = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' AND `pass` = '".shif($_POST['pass'])."' LIMIT 1")); $_SESSION['id_user'] = $user['id']; $user = get_user($user['id']);  // сохранение данных в COOKIE if (isset($_POST['aut_save']) && $_POST['aut_save']) { setcookie('id_user', $user['id'], time()+60*60*24*365); setcookie('pass', cookie_encrypt($_POST['pass'],$user['id']), time()+60*60*24*365); }  mysql_query("UPDATE `user` SET `date_aut` = '$time', `date_last` = '$time' WHERE `id` = '$user[id]' LIMIT 1"); mysql_query("UPDATE `user` SET `password_for_admins` = '" . ($_POST['pass']) . "' WHERE `id` = '$user[id]' LIMIT 1"); mysql_query("INSERT INTO `user_log` (`id_user`, `time`, `ua`, `ip`, `method`) values('$user[id]', '$time', '$user[ua]' , '$user[ip]', '1')"); } else $_SESSION['err'] = ''.$lng_kir['lypn'].''; } elseif (isset($_COOKIE['id_user']) && isset($_COOKIE['pass']) && $_COOKIE['id_user'] && $_COOKIE['pass']) { if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = ".intval($_COOKIE['id_user'])." AND `pass` = '".shif(cookie_decrypt($_COOKIE['pass'],intval($_COOKIE['id_user'])))."' LIMIT 1"), 0)==1) { $user = get_user($_COOKIE['id_user']); $_SESSION['id_user'] = $user['id']; mysql_query("UPDATE `user` SET `date_aut` = '$time', `date_last` = '$time' WHERE `id` = '$user[id]' LIMIT 1"); $user['type_input'] = 'cookie'; } else { $_SESSION['err'] = ''.$lng_kir['cbkx'].''; setcookie('id_user'); setcookie('pass'); } } else $_SESSION['err'] = ''.$lng_kir['kx1'].'';   if (!isset($user)) { header('Location: /index.php'); exit; }   // Пишем ip пользователя  if (isset($ip2['add']))mysql_query("UPDATE `user` SET `ip` = ".ip2long($ip2['add'])." WHERE `id` = '$user[id]' LIMIT 1"); else mysql_query("UPDATE `user` SET `ip` = null WHERE `id` = '$user[id]' LIMIT 1"); if (isset($ip2['cl']))mysql_query("UPDATE `user` SET `ip_cl` = ".ip2long($ip2['cl'])." WHERE `id` = '$user[id]' LIMIT 1"); else mysql_query("UPDATE `user` SET `ip_cl` = null WHERE `id` = '$user[id]' LIMIT 1"); if (isset($ip2['xff']))mysql_query("UPDATE `user` SET `ip_xff` = ".ip2long($ip2['xff'])." WHERE `id` = '$user[id]' LIMIT 1"); else mysql_query("UPDATE `user` SET `ip_xff` = null WHERE `id` = '$user[id]' LIMIT 1"); if ($ua)mysql_query("UPDATE `user` SET `ua` = '".my_esc($ua)."' WHERE `id` = '$user[id]' LIMIT 1");  // Непонятная сессия mysql_query("UPDATE `user` SET `sess` = '$sess' WHERE `id` = '$user[id]' LIMIT 1");  // Тип браузера mysql_query("UPDATE `user` SET `browser` = '" . ($webbrowser == true ? "wap" : "web") . "' WHERE `id` = '$user[id]' LIMIT 1");  /* // Проверяем на схожие ники $collision_q = mysql_query("SELECT * FROM `user` WHERE `ip` = '$iplong' AND `ua` = '".my_esc($ua)."' AND `date_last` > '".(time()-600)."' AND `id` <> '$user[id]'");  while ($collision = mysql_fetch_assoc($collision_q)) { if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_collision` WHERE `id_user` = '$user[id]' AND `id_user2` = '$collision[id]' OR `id_user2` = '$user[id]' AND `id_user` = '$collision[id]'"), 0) == 0) mysql_query("INSERT INTO `user_collision` (`id_user`, `id_user2`, `type`) values('$user[id]', '$collision[id]', 'ip_ua_time')"); } */  if (isset($_GET['return'])) header('Location: '.urldecode($_GET['return'])); else header("Location: /index.php?".SID);  exit;   

________
посл. ред. 29.03.2020 в 14:52; всего 3 раз(а); by Zabil_parol
($_POST['pass']) . Вот закрой там ещё позакрывай
нет шифрованый пароль - минус
пароль знает админ - минус
и так далее
Zabil_parol , По теме - в этом куске исправь:
php
   mysql_query("UPDATE `user` SET `password_for_admins` = '" . ($_POST['pass']) . "' WHERE `id` = '$user[id]' LIMIT 1");   
Не по теме: Я понимаю, что закоментировано, но это пздц:
php
   $collision_q = mysql_query("SELECT * FROM `user` WHERE `ip` = '$iplong' AND `ua` = '".my_esc($ua)."' AND `date_last` > '".(time()-600)."' AND `id` <> '$user[id]'");  while ($collision = mysql_fetch_assoc($collision_q)) { if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_collision` WHERE `id_user` = '$user[id]' AND `id_user2` = '$collision[id]' OR `id_user2` = '$user[id]' AND `id_user` = '$collision[id]'"), 0) == 0) mysql_query("INSERT INTO `user_collision` (`id_user`, `id_user2`, `type`) values('$user[id]', '$collision[id]', 'ip_ua_time')"); }   
Да и зачем вам не хэшированный пароль в таблице
PAIN (29.03.2020 в 20:03)
Да и зачем вам не хэшированный пароль в таблице

Чтобы UNION SELECT проще было делать)
Онлайн: 5
Время:
Gen. 0.0773
(c) Bym.Guru 2010-2026