如bash
命令
查看命令位置 which bash
查看命令对应某位置的符号表 nm -D /usr/bin/bash | grep readline
目标使用 readline 查看用户输入了什么
将cmd/sys/main.go
内执行切为sys.LoadBash()
go函数需要有不同返回的可能,如判断,不然写死了查不到这个函数
将cmd/sys/main.go
内执行切为sys.LoadGolangFunc()
go build -o http cmd/http/main.go
查看nm http | grep main
运行 ./http
go run cmd/sys/main.go
curl "http://127.0.0.1:8899?id=12"
截止v1.0
docker-compose up -d nginx1
docker-compose up -d nginx2
go run cmd/dockerxdp/main.go
docker-compose exec nginx1 bash
curl nginx2
go run cmd/tc/main.go
cat /sys/kernel/debug/tracing/trace_pipe
这次请求的容器必须是使用了docker0网卡网段的地址curl 172.17.0.2
截止v1.1
go run cmd/tc/main.go
必须进入其中一个docker内访问另一个docker,
docker-compose exec nginx2 bash
在nginx2
内访问curl 172.18.0.3:8080
,此时会将8080端口转发到80端口上
以上代码是有一个监听80端口的nginx
,并且在C代码中写死了,在去向为72.18.0.3,并且端口为8080的请求,转发到端口80上,如果这些ip或者端口不一样要修改C代码
截止v1.2
go run cmd/arp/main.go
cat /sys/kernel/debug/tracing/trace_pipe
docker-compose exec nginx1 arping -i eth0 nginx2
1请求arp 2相应arp
截止v1.3
go run ../cmd/arp/main.go
docker-compose exec nginx1 arping -i eth0 nginx2
截止v1.4
库的依赖 apt install libpcap-dev
go run cmd/arp/main.go
docker-compose exec nginx1 arping 172.18.0.9
实际上 172.18.0.9 并不存在,只是程序接收到 172.18.0.9 的arp请求后,伪装了个返回 截止v1.6
go run cmd/arp/main.go
docker-compose exec nginx1 arping 172.18.0.9
截止v1.7
go用户态分配内存,调用了runtime.mallocgc
分配内存大小
go run cmd/gotools/main.go
go build -o httpapp cmd/http/main.go
./httpapp
需要提前把被监听的httpapp
目录写到cmd/gotools/main.go
里
v2.0