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

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

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

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

Idtcpserver1

  • Автор темы slavon-x86
  • Дата начала
S

slavon-x86

IdTCPServer1
Как можно получить и отравить данные, если 2 подключения одновременно.
Т.е. по сути как работать с каждым подключением по отдельности ?
 
S

slavon-x86

Разобрался ! Вот пример, может кому ещё понадобиться !

Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
List: TList;

begin
try
List := IdTCPServer1.Contexts.LockList;
Memo1.Lines.Add(IntToStr(List.Count));
IdTCPServer1.Contexts.UnlockList;
except
end;

TIdContext(List.Items[0]).Connection.Socket.WriteLn(s);
TIdContext(List.Items[0]).Connection.Disconnect;
end;
 
S

slavon-x86

Ничего я не понял ! :angry:
То что я написал выше работает так криво, что у меня мозги через нос вытекают !

К примеру: есть 3 активных подключения, первый отключается, то все остальные сдвигаються и меняются индексы ! Я хочу передать сообщение 1 подключению, но пока в OnDisconnect я обрабатываю сдвиг индексов - сообщение передаётся 2 клиенту !

Как сделать чтобы было нормально ?
 
S

slavon-x86

Мне надо создать HTTP сервер с помощью компонента idTCPserver
Но проблема в следеющем:
Браузер делает одновременно 2 запроса к серверу. Как мне по отдельности обработать (получить и отправить данные) каждый запрос.
 
S

slavon-x86

А почему не TIdHTTPServer?
Это уже готовый HTTP сервер, который не совсем удовлетворяет нужным мне параметрам. Его конечно можно переделать, но idTCPserver для моего случая лучше подходит.
На каком-то сайте (не помню на каком) была написана статья взлома TIdHTTPServer. Через какую-то команду можно получить доступ к любой папке !

Но всё таки я реально не могу понять как решить проблему
Код:
Браузер делает одновременно 2 запроса к серверу. Как мне по отдельности обработать (получить и отправить данные) каждый запрос.
 
S

slavon-x86

Постановка задачи

Есть компонент idTCPserver. localhost:80

Клиент (браузер, к примеру Opera) отсылает одновременно 3 запроса на (localhost:80) - 1: GET index.php, 2: GET favicon.php, 3: GET signup.php

Надо отосдать: "Текст1" на запрос (1)
Надо отосдать: "Текст2" на запрос (2)
Надо отосдать: "Текст3" на запрос (3)

Как мне отослать ответы на каждый запрос ?


Пример

Код:
var
List: TList;
s: String;
i: Integer;

Begin

List := IdTCPServer1.Contexts.LockList;
IdTCPServer1.Contexts.UnlockList;

// Действие 1 - Количество активных подключений
i := List.Count;

...

// Действие 2 - Отправка данных
TIdContext(List.Items[i-1]).Connection.Socket.WriteLn(s);

end;

Я получаю количество активных подключений (Действие 1). К примеру i = 3
Затем отключается 1-й пользователь, и i становиться = 2
Происходит событие OnDisconnect, но пока данные там обрабатываются запускается отправка данных (Действие 2) пользователю i = 3, но его уже не существует, т.к. первый отключился, а остальные сдвинулись.
 
S

slavon-x86

Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
...
end
 
S

slavon-x86

Хм, я туплю ! Причём уже 15 часов подряд :) !

Оно просто запускает событие TForm1.IdTCPServer1Execute(AContext: TIdContext) повторно если не все данные прочитаны. Как прочитать все данные ?

Я делаю вот так, но чувствую что это неправильно, т.к. строка может быть пустой...
Код:
repeat
s1 := AContext.Connection.Socket.ReadLn;
s2 := s2 + s1;
until s1 = '';


И вопрос н засыпку, как узнать MAC-адресс клиента ?
 
S

slavon-x86

Я же говорю, посмотрите как реализован механизм у TIdHTTPServer.
Если бы я смог в этом разобраться...


И вопрос н засыпку, как узнать MAC-адресс клиента ?
Никак. А зачем он вам?
Узнать можно ! Вопрос как !?
Для защиты от подмены IP
 
S

slavon-x86

Узнать можно ! Вопрос как !?
Ну известно как, найти этого клиента, припереть его к стенке, дать ему по самое неболуй, и он сам все расскажет.
Если найдете другой метод. пишите тут его.
Ну вобщето мак адресс обеспечивает связь через IP протокол
МАК адрес это физический адрес контроллера, и на нём вся маршрутизация основана. Снифер его видит, а зничит он есть ! Его надо только извлечь как-то !



Код:
[code]Для защиты от подмены IP
Странная трактовка, а как вы себе это представляете? Вот клиент пришел к вам через анонимный прокси, это как[/code]
Отправлю запрос на обратный IP-адресс, если попросит логинизироватся, то это частный прокси сервер, причём даже если он мега анонимный, у него всё равно открыт один из Default портов ! А если не анонимный, то просто выполнит мой запрос !
 
S

slavon-x86

Вот маки
 

Вложения

  • 123.JPG
    123.JPG
    55,2 КБ · Просмотры: 205
S

slavon-x86

Пошлю любой GET запрос с указанием в заголовке прокси ! Вобще анонимный прокси я точно не знаю как определить !
 
S

slavon-x86

Возможно он поросит авторизоваться ! Если попросит, значит прокси !
 
Мы в соцсетях:

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