• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Http аутентификация

  • Автор темы GOBLIN
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

GOBLIN

Народ хелп вот есть пример странички которая запрашивает логин и пароль но где указывать логин и пароль я незнаю подскажите.
Вот код


<?
$path_log = "/home/ernst/.htmyway";

// Konfigurationsfile einlesen:
$file = file($path_log);

$login = FALSE; // Gets TRUE, when login is valid
$ip = 'world'; // This is the currend IP while reading the configuration
$access = 'world'; // IP from configuration fitting into $_SERVER['REMOTE_ADDR']

foreach ($file as $zeile)
{
$zeile = trim($zeile);

switch(true)
{
case ( strlen($zeile) == 0 ): // break for empty lines
break;

case ( substr($zeile, 0, 1) == '#' ): // break for Komments
break;

case ( substr($zeile, 0, 2) == 'IP' ): // change IP range
$ip = substr($zeile, 3);
if ($ip == '')
$ip = 'world';

if ( ereg("^$ip", $_SERVER['REMOTE_ADDR']) ) // fitting IP
{
$access = $ip;
}
break;

case ( ereg("(.+)<_<.*)", $zeile, $reg) ): // scan passwords
$logray[$ip][$reg[1]] = $reg[2];
break;

case ( $zeile == 'ALL' ): // if no login is needet
$logray[$ip]['all'] = 1;
}
}

// <for testing>
if ( isset($_GET['logout']) )
{
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
}
// </for testing>

// authorisation test
if ( isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']) )
if( isset($logray[$access][$_SERVER['PHP_AUTH_USER']]) )
if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
$login = TRUE;

if ( isset($logray[$access]['all']) )
$login = TRUE;

// send login-form if needet
if ( !$login )
{
Header("WWW-Authenticate: Basic realm=\"Test Authentication System\"");
Header("HTTP/1.0 401 Unauthorized");
echo "You must enter a valid login ID and password to access this resource\n";
exit;
}

// Your running programm...
if ( $login )
{
echo "Hello " . $_SERVER['PHP_AUTH_USER'];

?>
<BR>
<form>
<input type='submit' name='logout' value='logout'>
</form>
<?

}
?>


Где тут указывать логин и пароль ??
Как я понял надо создать библиотеку и вписать туда это
Код:

# Passwort for special IP-Range
IP 192.168.0.
axel:pGWAiIeUxcHOg
sven:ADD1IDbsVHSEo

# Following IP works without password (Keyword 'ALL')
IP 192.168.0.4
ALL

# Passwords for the rest of the world
IP
ernst:INo9dSzfU5sRU
sven:ADD1IDbsVHSEo


Или нет HELP!!!
 
D

DikMax

Если я правильно понял, то это файл в формате, что ты описал. И он должен лежать по пути указанном в $path_log

и там идет строчка 'IP ...'
и после нее идут строки 'login:password'
Причем пароль вроде как зашифрован.
 
G

GOBLIN

Значит мне надо создать файл в деректории где лежит мой пхп скрипт а файл в каком формате должен быть в .php
Зашифрованный <_<
 
D

DikMax

Вроде пароль шифруется вот так: $pass = crypt($original_pass)
 
G

GOBLIN

А как сделать чтобы например я сделал
Логин GOBLIN
Пароль 123

Я просто не очень в этом парю

Можеш помоч его настроить.
 
D

DikMax

Создаешь небольшой файлик

Код:
<?
echo crypt('123');
?>

Смотришь что выводит

и потом строишь файл с паролями

Код:
IP
GOBLIN:$$$

Где $$$ - это то, что выдал первый файл
 
G

GOBLIN

А файл с паролями в каком форматье должен быть .php ??
 
G

GOBLIN

Значит надо создать файл например

password.txt
И вписать туда

IP
GOBLIN:$$$

Потом создать файл

enter.php

и вписать туда
<?
echo crypt('123');
?>

А здесь написать
$path_log = "password.txt";

Вот тока я непойму где связь между файлами enter.php и password.txt

Создал небольшой файлик как ты сказал и вот что получилось


Я понял этот файл работает как генератор паролей всё ок но как мне правильно построить файл с паролями чтобы ему передавалось значение файла
 
S

s10

<!--QuoteBegin-GOBLIN+19:07:2006, 17:51 -->
<span class="vbquote">(GOBLIN @ 19:07:2006, 17:51 )</span><!--QuoteEBegin-->Вот тока я непойму где связь между файлами enter.php и password.txt
[snapback]40411" rel="nofollow" target="_blank[/snapback]​
[/quote]


у тя щя есть твой echo.php который выводит результат шифрования ф строку. В нем к примеру пишешь так

Код:
<?php
echo crypt('123');
?>

в результате получишь
$1$HC2.Ez1.$QzukUevXX9NJQzOO0c4yv0 - так вот это и есть хэш твоего пароля (123), который (хэш) нужно записать в файл password.txt вместо $$$

IP
GOBLIN: $1$HC2.Ez1.$QzukUevXX9NJQzOO0c4yv0

а в самом скрипте твоем поправить путь до файла
$path_log = "путь/до/password.txt"

это насколько я понял.
 
G

GOBLIN

И пароль получается будет тот что генерирует файл echo.php а логин GOBLIN

Например

Login: GOBLIN
Password: Пароль сгенерированный файлом echo.php

вот что получилось


тока не работает всёравно.
 
S

s10

<!--QuoteBegin-GOBLIN+19:07:2006, 21:33 -->
<span class="vbquote">(GOBLIN @ 19:07:2006, 21:33 )</span><!--QuoteEBegin-->И пароль получается будет тот что генерирует файл echo.php а логин GOBLIN
[snapback]40420" rel="nofollow" target="_blank[/snapback]​
[/quote]
эээ. нет. пароль надо вводить тот который ты передавал аргументом в crypt().
т.е. если (как у меня) файл password.txt такой :
IP
GOBLIN: $1$HC2.Ez1.$QzukUevXX9NJQzOO0c4yv0

то при загрузке твоего скрипта, там где он просит лог и пароль надо в поле пароля писать 123.
если скрипт правильно работает то все будет ок.
 
G

GOBLIN

Вот вообщем получилось у меня 3 файла
1) index.php \\ Сам скрипт
2)echo.php \\ Генератор паролей
3)password.txt \\ Файл с паролем

Код файла index.php
Код:
<?
$path_log = "password.txt";

// Konfigurationsfile einlesen:
$file = file($path_log);

$login = FALSE;					// Gets TRUE, when login is valid
$ip = 'world';					// This is the currend IP while reading the configuration
$access = 'world';				// IP from configuration fitting into $_SERVER['REMOTE_ADDR']

foreach ($file as $zeile)
{
$zeile = trim($zeile);

switch(true)
{
case ( strlen($zeile) == 0 ):				// break for empty lines
break;

case ( substr($zeile, 0, 1) == '#' ):			// break for Komments
break;

case ( substr($zeile, 0, 2) == 'IP' ):		// change IP range
$ip = substr($zeile, 3);
if ($ip == '')
$ip = 'world';

if ( ereg("^$ip", $_SERVER['REMOTE_ADDR']) )	// fitting IP
{
$access = $ip;
}
break;

case ( ereg("(.+):(.*)", $zeile, $reg) ):		// scan passwords
$logray[$ip][$reg[1]] = $reg[2];
break;

case ( $zeile == 'ALL' ):				// if no login is needet
$logray[$ip]['all'] = 1;
}
}

// <for testing>
if ( isset($_GET['logout']) )
{
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
}
// </for testing>

// authorisation test
if ( isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']) )
if( isset($logray[$access][$_SERVER['PHP_AUTH_USER']]) )
if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
$login = TRUE;

if ( isset($logray[$access]['all']) )
$login = TRUE;

// send login-form if needet
if ( !$login )
{
Header("WWW-Authenticate: Basic realm=\"Доступ к секретному разделу\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Вы превысели допустимое количество попыток.\n";
exit;
}

// Your running programm...
if ( $login )
{
echo "Hello " . $_SERVER['PHP_AUTH_USER'];

?>
<BR>
<form>
<input type='submit' name='logout' value='logout'>
</form>
<?

}
?>


2)Код файла echo.php
Код:
<?
echo crypt('123');
?>

3)Код файла password.txt
IP
GOBLIN: $1$oh.ip8wc$N/AGQphhThq3wVMT3ZUlH0

Посмотри всё ли тут правильно Плиз :)

Всё залил на сервер по адресу


Но всё равно не работает значит гдето ошибка помоги найти

1)http://goblin.tushino.com/auntification/index.php
2)http://goblin.tushino.com/auntification/echo.php
3)http://goblin.tushino.com/auntification/password.txt
\\ Все мои файлы коды вверху
 
S

s10

.. беру свои слова назад. я не знаю как это работает.

Код:
if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
$login = TRUE;

скажите кто нибудь, а почему в crypt() вторым аргументом стоит substr(...,0,2)
а не просто $logray[$access][$_SERVER['PHP_AUTH_USER']] ?
 
D

DikMax

Есть предположение, что и пароль нужно генерить в виде crypt('password','login').
Просто я немного не понимаю принцип действия всего этого дела.
 
G

GOBLIN

Ну тогда подскажите тоже самое токо по прше как сделать
 
S

s10

смари [snapback]40478" rel="nofollow" target="_blank[/snapback]</div>[/quote]
так и есть. второй параметр обязателен.
 
S

s10

2 GOBLIN
в файле password.txt надо указывать с какого ip ты заходищь.
имя пользователя и пароль.
вот к примеру у тебя какой ip?

***
2 GOBLIN
все в архиве, читай README.
 
G

GOBLIN

s10 Спасибо огромное всё получилось тока вот косяк ты напписал чтобы не было "?logout=logout" ну вот оно было и сохранилось гдето на компе где оно лежит и как мне его удалить.

Вот ещё воопрос там когда пароль ввёл то при следуещем заходе он больше не предложит вводить пароль а просто скажет хелло .....
Как сделать чтобы он всегда запрашивал пароль.
 
G

GOBLIN

Кстати вот сатья может поймёте чо нить
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!