|
|
|
| Как взломать простейшую проверку на правильность пароля.
<?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 "если этот текст выводит можно считать что все нах взломано";}
}
?>
|
Только не считая подбора. | |
|
|
|
|
|
|
|
для: forma
(01.09.2006 в 22:32)
| | Поскольку я не вижу форму для вода чего либа, то я незнаю... | |
|
|
|
|
|
|
|
для: DEM
(01.09.2006 в 22:45)
| | А зачем форма?
Можно все вписывать в ссылку. | |
|
|
|
|
|
|
|
для: DEM
(01.09.2006 в 22:45)
| | Ну если без формы не можете..
<form method="GET">
<p>ваш пароль:</p>
<input type="text" name="usern">
<input type="submit" value="вход">
</form>
|
| |
|
|
|
|
|
|
|
для: forma
(21.09.2006 в 14:43)
| | <input type="password" name="usern">* | |
|
|
|
|
|
|
|
для: forma
(01.09.2006 в 22:32)
| | помоему только брутить... | |
|
|
|
|
|
|
|
для: CrazyAngel
(01.09.2006 в 22:48)
| | что за брутить? | |
|
|
|
|
|
|
|
для: forma
(16.09.2006 в 22:23)
| | Перебирать пароль. | |
|
|
|
|
|
|
|
для: 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...");
?>
|
| |
|
|
|
|
|
|
|
для: Unkind™
(01.09.2006 в 22:55)
| | >А проще сделать:
Э-э... Это чтобы долго не мучится, что ли?? | |
|
|
|
|
|
|
|
для: Unkind™
(01.09.2006 в 22:55)
| | а вот тут можно сломать хехе) | |
|
|
|
|
|
|
|
для: CrazyAngel
(01.09.2006 в 23:24)
| | Ну давайте
Может вас смущает "'".$_GET['password']."'"? :)) | |
|
|
|
|
|
|
|
для: Unkind™
(02.09.2006 в 00:25)
| | именно) но может я не прав....я не кулхарерц | |
|
|
|
|
|
|
|
для: 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. По крайней мере мне так сказали :-| | |
|
|
|
|
|
|
|
для: victoor
(02.09.2006 в 01:05)
| | В торопях написал :)) | |
|
|
|
|
|
|
|
для: victoor
(02.09.2006 в 01:05)
| | А если обработать переменную с функцией mysql_escape_string, то простой хакер взломать не сможет? | |
|
|
|
|
|
|
|
для: forma
(29.09.2006 в 09:55)
| | Нет, не сможет. | |
|
|
|
|
|
|
|
для: CrazyAngel
(01.09.2006 в 23:24)
| | Ну и как же? | |
|
|
|
|
|
|
|
для: forma
(01.09.2006 в 22:32)
| | up | |
|
|
|
|
|
|
|
для: forma
(05.09.2006 в 18:43)
| | 1 | |
|
|
|
|
|
|
|
для: forma
(01.09.2006 в 22:32)
| | можно просто взглянуть в любое место, где сохраняются адреса обращений. Логи сервера, история и кеш браузера, логи прокси и т.д. | |
|
|
|
|
|
|
|
для: Trianon
(21.09.2006 в 15:10)
| | дык можно и через post передать и можно через сессии если захотеть...
помоему тоже кроме брута ничего не поможет :( | |
|
|
|
|
|
|
|
для: kaoz
(21.09.2006 в 20:58)
| | все гет и пост нужно проверять на наличие скрипта!
Иначе взлом происходит методом mysql injection, а значит:
Что-то типа $_GET['login'] = ' что-то" JOIN что-то .........';
или вместо JOIN - *UNION
такой гет котегорически запрещаеться ставить в mysql_query - если конечно админу не все равно, что он не защещен!
Надеюсь смысл понятен! | |
|
|
|