Socat环境搭建

socat是一个神器,姑且我现在理解它为nc的加强版,尤其是socat有ssl的功能,这个就比较方便环境的搭建,最近要复现环境还是用到了这个

安装

sudo apt-get install socat

或者去管网下载安装包,无妨

基本语法

socat [options] <address> <address>

几个常用的描述方式如下:

  • STDIN,STDOUT :表示标准输入输出,可以就用一个横杠代替
  • /var/log/syslog : 也可以是任意路径,如果是相对路径要使用./,打开一个文件作为数据流。
  • TCP:: : 建立一个TCP连接作为数据流,TCP也可以替换为UDP
  • TCP-LISTEN: : 建立TCP监听端口,TCP也可以替换为UDP
  • EXEC: : 执行一个程序作为数据流。

在这些描述后可以附加一些选项,用逗号隔开,如fork,reuseaddr,stdin,stdout,ctty等。

socat进行文件操作

读取文件,注意这里的路径必须是绝对路径

socat - /var/www/html/flag.php 

写入文件

echo "2333" | socat - /var/www/html/hello.html

以后做题的时候如果有条件也是一种文件的操作方法

socat的netcat功能模块

远程链接端口

nc localhost 80
socat - TCP:localhost:80

监听端口

nc -lp localhost 233
socat TCP-LISTEN:233 

正向shell

nc -lp localhost 700 -e /bin/bash
socat TCP-LISTEN:700 EXEC:/bin/bash

反弹shell

nc localhost 700 -e /bin/bash
socat tcp-connect:localhost:700 exec:'bash -li',pty,stderr,setsid,sigint,sane

确实一应俱全!

代理与转发

将本地80端口转发到远程的80端口

socat TCP-LISTEN:80,fork TCP:www.domain.org:80

SSL连接

SSL服务器

需要首先生成证书文件

socat OPENSSL-LISTEN:443,cert=/cert.pem -

SSL客户端

socat - OPENSSL:localhost:443

fork服务器

可以将一个使用标准输入输出的单进程程序变为一个使用fork方法的多进程服务

socat TCP-LISTEN:1234,reuseaddr,fork EXEC:./helloworld

不同设备的通信

socat -d -d /dev/ttyUSB1,raw,nonblock,ignoreeof,cr,echo=0 TCP4-LISTEN:5555,reuseaddr

将终端转发到COM1

socat READLINE,history=$HOME/.cmd_history /dev/ttyS0,raw,echo=0,crnl

大多数参考了前辈们的文章
http://brieflyx.me/2015/linux-tools/socat-introduction/
http://www.jianshu.com/p/a659924515f7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章