Autor
|
Tema: Shell Remota en C (Leído 7,477 veces)
|
fary
|
Buenas, estoi intentando hacer una Shell Remota en C ya que nunca hice una en este lenguaje y me pica la curiosidad el caso es que no me sale... El código que tengo es este: #include <windows.h> #include <stdlib.h> #include <stdio.h> int main() { PHANDLE leer; PHANDLE escribir; SECURITY_ATTRIBUTES sa; STARTUPINFO si; PROCESS_INFORMATION pi; DWORD bytes; CreatePipe(leer,escribir,&sa,0); si.cb = 68; si.dwFlags = 257; si.hStdError = escribir; si.hStdOutput = escribir; CreateProcessA(0,"cmd.exe /c ping 127.0.0.1", &sa, &sa, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi); Sleep(100); CloseHandle(escribir); char buffer[1024]; char total[1024]; int ret = ReadFile(leer,buffer,250,&bytes,0); lstrcat(total,buffer); while(ret != 0) { ret = ReadFile(leer,buffer,250,&bytes,0); lstrcat(total,buffer); } MessageBoxA(0,total,0,0); return 0; }
Alguien sabe que hago mal? salu2!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Esta es la buen forma de hacerlo: http://goodfellas.shellcode.com.ar/docz/asm/WritingSmallShellcode.pdf
|
|
|
En línea
|
|
|
|
fary
|
Muchas gracias Karcrack sin duda lo leeré pero tambien me gustaria saber que ago mal en el código que postee.
salu2!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
¿No tendrías que crear el pipe luego de iniciar la shell? Estas llamando a CreatePipe con dos handles nulos (o ni eso, que no están inicializados a 0), al igual que tampoco inicializaste a 0 los miembros de PROCESS_INFORMATION y STARTUPINFO (salvo cb, que sí lo pusiste bien).
Saludos
|
|
« Última modificación: 27 Marzo 2011, 17:19 pm por [Zero] »
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
fary
|
Muchas gracias a los dos, ya lo consegui hacer... el caso es que me quedo así: #include <windows.h> #include <stdlib.h> #include <stdio.h> int main() { SECURITY_ATTRIBUTES sa; STARTUPINFO si; PROCESS_INFORMATION pi; void * leer; void * escribir; ZeroMemory(&sa,sizeof(&sa)); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; CreatePipe(&leer,&escribir,&sa,0); GetStartupInfoA(&si); si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; si.hStdOutput = escribir; si.hStdError = escribir; si.hStdInput = leer; CreateProcessA(0,"c:\\windows\\system32\\cmd.exe /c dir",0,0,TRUE,0,0,0,&si,&pi); Sleep(200); CloseHandle(escribir); char buffer[1024]; DWORD bleidos; ReadFile(leer,buffer,1024,&bleidos,0); MessageBoxA(0,buffer,0,0); return 0; }
No es una "MegaShell" pero su "apaño" hace salu2!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
@Drinky94: Mejor seria que en vez de utilizar una ruta hardcodeada pusieses la variable de entorno adecuada; %ComSpec% Y eso de usar Sleeps es muy cutre
|
|
|
En línea
|
|
|
|
fary
|
Te refieres a esperar a que se cree el proceso usando WaitForSingleObject, no?
salu2!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Hasta que el proceso no se crea no continua la ejecución de tu programa
|
|
|
En línea
|
|
|
|
fary
|
Hasta que el proceso no se crea no continua la ejecución de tu programa No se me ocurre como hacerlo... de una forma rápida, alguna pista? salu2!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
No hay que hacer nada Con hacer CreateProces() sobra... hasta que el proceso no se ha creado no vuelve la ejecución a tu programa...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
shell remota y .NET
.NET (C#, VB.NET, ASP)
|
moe88
|
5
|
5,853
|
4 Junio 2006, 01:49 am
por ByteCoderz
|
|
|
Shell Remota
Programación Visual Basic
|
xDie
|
3
|
1,918
|
4 Octubre 2006, 19:25 pm
por ~~
|
|
|
shell remota
Programación C/C++
|
daryo
|
0
|
1,652
|
4 Enero 2013, 16:27 pm
por daryo
|
|
|
problema con shell remota
Programación C/C++
|
daryo
|
0
|
1,490
|
4 Julio 2014, 22:58 pm
por daryo
|
|