Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как взломать систему авторизаци
 
 автор: forma   (01.09.2006 в 22:32)   письмо автору
 
 

Как взломать простейшую проверку на правильность пароля.

<?php
$user 
"zxcv"
$pass "zxcv"
$link mysql_connect("database"$user$pass); 
if(!
$link) die("Сервер MySQL не доступен"); 
mysql_select_db($user$link);
$sql mysql_query("SELECT `pass` FROM `users` WHERE `nik`='forma'");
while(
$r=mysql_fetch_assoc($sql))
{
if(
$_GET['pass']==$r['pass']) {print "если этот текст выводит можно считать что все нах взломано";}
}
?>

Только не считая подбора.

   
 
 автор: DEM   (01.09.2006 в 22:45)   письмо автору
 
   для: forma   (01.09.2006 в 22:32)
 

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

   
 
 автор: forma   (16.09.2006 в 22:22)   письмо автору
 
   для: DEM   (01.09.2006 в 22:45)
 

А зачем форма?
Можно все вписывать в ссылку.

   
 
 автор: forma   (21.09.2006 в 14:43)   письмо автору
 
   для: DEM   (01.09.2006 в 22:45)
 

Ну если без формы не можете..

<form method="GET"> 
<p>ваш пароль:</p>
<input type="text" name="usern">
<input type="submit" value="вход">
</form>

   
 
 автор: forma   (09.10.2006 в 21:18)   письмо автору
 
   для: forma   (21.09.2006 в 14:43)
 

<input type="password" name="usern">*

   
 
 автор: CrazyAngel   (01.09.2006 в 22:48)   письмо автору
 
   для: forma   (01.09.2006 в 22:32)
 

помоему только брутить...

   
 
 автор: forma   (16.09.2006 в 22:23)   письмо автору
 
   для: CrazyAngel   (01.09.2006 в 22:48)
 

что за брутить?

   
 
 автор: Unkind™   (17.09.2006 в 00:50)   письмо автору
 
   для: forma   (16.09.2006 в 22:23)
 

Перебирать пароль.

   
 
 автор: Unkind™   (01.09.2006 в 22:55)   письмо автору
 
   для: forma   (01.09.2006 в 22:32)
 

А проще сделать:

<?php
//Пропущено

$sql mysql_query("SELECT * FROM `users` WHERE `nickname`= 'forma' AND `password` = '".$_GET['password']."';");
if(
mysql_affected_rows() == 0) die("Login error...");
?>

   
 
 автор: Киналь   (01.09.2006 в 23:24)   письмо автору
 
   для: Unkind™   (01.09.2006 в 22:55)
 

>А проще сделать:

Э-э... Это чтобы долго не мучится, что ли??

   
 
 автор: CrazyAngel   (01.09.2006 в 23:24)   письмо автору
 
   для: Unkind™   (01.09.2006 в 22:55)
 

а вот тут можно сломать хехе)

   
 
 автор: Unkind™   (02.09.2006 в 00:25)   письмо автору
 
   для: CrazyAngel   (01.09.2006 в 23:24)
 

Ну давайте
Может вас смущает "'".$_GET['password']."'"? :))

   
 
 автор: CrazyAngel   (02.09.2006 в 00:34)   письмо автору
 
   для: Unkind™   (02.09.2006 в 00:25)
 

именно) но может я не прав....я не кулхарерц

   
 
 автор: victoor   (02.09.2006 в 01:05)   письмо автору
 
   для: Unkind™   (02.09.2006 в 00:25)
 

я где-то читал про такой способ:
запрос исходный:
$sql = mysql_query("SELECT * FROM `users` WHERE `nickname`= 'forma' AND `password` = '".$_GET['password']."';"); 

если в переменной password будет значение 1' OR `nickname`='forma
тогда вроде как запрос будет выглядеть так:
$sql = mysql_query("SELECT * FROM `users` WHERE `nickname`= 'forma' AND `password` = '1' OR `nickname`='forma';"); 

тогда, вроде-как, запрос будет искать запись, в которой логин и пароль соотв. введенным ИЛИ логин соответствует введенному, а пароль не проверяется.

бороться с этим можно, если вначале проверить, не содержит ли введенные данные недопустимых символов и используя функцию mysql_escape_string($_GET['password']); которая экранирует спец. символы MySQL. По крайней мере мне так сказали :-|

   
 
 автор: Unkind™   (02.09.2006 в 11:51)   письмо автору
 
   для: victoor   (02.09.2006 в 01:05)
 

В торопях написал :))

   
 
 автор: forma   (29.09.2006 в 09:55)   письмо автору
 
   для: victoor   (02.09.2006 в 01:05)
 

А если обработать переменную с функцией mysql_escape_string, то простой хакер взломать не сможет?

   
 
 автор: cheops   (29.09.2006 в 11:07)   письмо автору
 
   для: forma   (29.09.2006 в 09:55)
 

Нет, не сможет.

   
 
 автор: forma   (02.09.2006 в 22:33)   письмо автору
 
   для: CrazyAngel   (01.09.2006 в 23:24)
 

Ну и как же?

   
 
 автор: forma   (05.09.2006 в 18:43)   письмо автору
 
   для: forma   (01.09.2006 в 22:32)
 

up

   
 
 автор: buka   (21.09.2006 в 15:18)   письмо автору
 
   для: forma   (05.09.2006 в 18:43)
 

1

   
 
 автор: Trianon   (21.09.2006 в 15:10)   письмо автору
 
   для: forma   (01.09.2006 в 22:32)
 

можно просто взглянуть в любое место, где сохраняются адреса обращений. Логи сервера, история и кеш браузера, логи прокси и т.д.

   
 
 автор: kaoz   (21.09.2006 в 20:58)   письмо автору
 
   для: Trianon   (21.09.2006 в 15:10)
 

дык можно и через post передать и можно через сессии если захотеть...

помоему тоже кроме брута ничего не поможет :(

   
 
 автор: SoloNifer   (25.09.2006 в 20:21)   письмо автору
 
   для: kaoz   (21.09.2006 в 20:58)
 

все гет и пост нужно проверять на наличие скрипта!

Иначе взлом происходит методом mysql injection, а значит:

Что-то типа $_GET['login'] = ' что-то" JOIN что-то .........';
или вместо JOIN - *UNION

такой гет котегорически запрещаеться ставить в mysql_query - если конечно админу не все равно, что он не защещен!

Надеюсь смысл понятен!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования