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

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

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

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

Статья Самый простой логгер

Всем привет, многие знают такое понятие, как логгер ( если нет, то ниже есть определение ) , но многие такие сайты платные и , что бы узнать информацию про человека вам приходится платить деньги, либо сидеть, стиснув зубы.
Код:
Логгер - программа, предназначенная для вычисления данных о пользователе, который заходит на Ваш сайт.
Сегодня мы с Вами напишем САМЫЙ ПРОСТОЙ логгер, который может быть. Он будет возвращать данные от сервера, т.е. ip , устройство, с которого сидит пользователь. Для этого нам понадобится бесплатный хостинг ( я буду использовать 000webhost ). И так, приступим.
Для начала создадим файл index.php и напишем стандартную разметку страницы, выглядит она вот так:
Код:
<!DOCTYPE html>
<html>
<head>
     <meta charset="URF-8"/>
     <title>My photoes</title>
</head>
<body>
</body>
<html></html
И так, приступим к основной части, напишем скрипт на php, который будет выводить всю информацию от сервера.
Первым делом откроем тег php :)
Код:
<?php ?>
Создадим цикл foreach, но перед этим объявим переменную data, в которой у нас будут содержаться все данные от сервера.
Код:
$data = "/n/n";
Теперь приступим к циклу.
Код:
foreach ($_SERVER as $key => $val) {
    $data .= "{$key}: {$val}\n";
}
Для тех, кому непонятно , он выводит в переменную $data все данные от сервера с новой строки.
Я хочу, что бы данные заносились в текстовый файл, именем которого будет ip и дата ( число, год, время). Для этого сначала создадим две переменные.
Код:
$datenow = date("l dS of F Y h:i:s A"); // Получаем дату
$ipadress = $_SERVER['REMOTE_ADDR']; // Получаем ip пользователя.
Создаём новую переменную и используем функцию fopen, дабы задать расположение и имя нашего файла ( все текстовые файлы я буду хранить в папке log )
Код:
$fp = fopen("log/$ipadress || $datenow.txt", "w");
Далее задаём значение нашего файла, то есть то, что в нём будет.
Код:
fwrite($fp, $text);
И нам осталось только закрыть этот самый файл, что бы не возникло никаких проблем.
Код:
fclose($fp);
Весь код должен выглядеть примерно так:
Код:
<?php
    $data = "\n\n";
foreach ($_SERVER as $key => $val) {
    $data .= "{$key}: {$val}\n";
}
    $ipadress = $_SERVER['REMOTE_ADDR'];
    $datenow = date("l dS of F Y h:i:s A");
$text = "$data";
$fp = fopen("log/$ipadress || $datenow.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>
Конечно, это самый слабый логгер, но всё же уже неплохо. Теперь, что бы никто не заподозрил, что это логгер, создадим новую страницу, в которой будет сообщаться, что сайт временно не работает, а скрипт на js будет переправлять пользователя с основной страницы на страницу с ошибкой :).
Так, ну, с созданием страницы с ошибкой всё просто, я даже не стал заморачиваться и сделал вот это(страницу я поместил в отдельную папку 'error'):
Код:
HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <title>Опаньки..</title>
        <link rel="stylesheet" href="style.css"/>
    </head>
    <body>
        <div><h1>Извините, но в данное время сайт не работает.</h1>
        <p>Проверьте своё подключение к интернету.</p></div>
    </body>
</html>

CSS:

h1, p {
    display:flex;
    align-items:center;
    justify-content:center;
}
p {
    color:blue;
}
div {
    padding-top:45vh;
}
А так же в главной странице создадим скрипт, который через 2 секунды будет нас перенаправлять на страницу с ошибкой:
Код:
<script>
function replace() {
    document.location.replace("error/index.html"); }  // меняем локацию документа
setTimeout(replace, 2000); // через 2 секунды запускается функция replace.
</script>
Ну вот вроде и всё! Остаётся только залить все файлы на хостинг и не забыть создать папку log! :) Этот скрипт для новичков, так что не судите строго) Скоро, думаю выйдет статья по F# и C#, Ждёте?

P.S. Если остались вопросы или ошибки, то пишите в комментарии или мне в личные сообщения. Всех благ :).
 
M

m0ze

Не совсем понятно, чем IP и дата посещения страницы могут помочь и в чём конкретно. Это раз. Два - голый $_SERVER['REMOTE_ADDR']; может дать на выходе неверную информацию, так что и без того неинформативный лог вообще обнулится. Три - из заявленных «Он будет возвращать данные от сервера, т.е. ip , устройство, с которого сидит пользователь.» и «<...> напишем скрипт на php, который будет выводить всю информацию от сервера.» ничего толком-то и не реализовано. Четыре - «Теперь, что бы никто не заподозрил, что это логгер, создадим новую страницу, в которой будет сообщаться, что сайт временно не работает, а скрипт на js будет переправлять пользователя <...>» - это могучий костыль, который не вызовет подозрений только у рядового пользователя с одним паролем «qwerty» на всех учётных записях. Почему сразу не сделать страницу index.php/error.php/soon.php и избежать каких-то ненужных редиректов?
 
С

Святослав Светличный

Это скорее гейт для логгера, чем сам логгер.
Код:
date("l dS of F Y h:i:s A");
за 10 лет работы с php первый раз аргумент функции вижу в таком виде :)
 
Мы в соцсетях:

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