bind函数用于将套接字绑定到特定的IP地址和端口上,而listen函数则将该套接字设置为监听状态,准备接受客户端的连接请求。...在TCP连接建立的过程中,服务器端套接字需要经历从CLOSED到LISTEN的转换,才能开始接受客户端的连接请求。...noclose:如果此参数为0,则daemon函数会将标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)重定向到/dev/null。...重定向标准I/O:如果noclose参数为0,则将标准输入、标准输出和标准错误输出重定向到/dev/null。...将标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)重定向到/dev/null。这意味着不会接收任何输入,其输出和错误也不会显示在终端或任何文件中。
WSASocket 无管道正向CMD,使用WSASocket函数创建一个TCP套接字,并绑定到一个本地地址和端口上。...然后使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,客户端可以通过网络连接到这个套接字,发送CMD命令并获取命令输出结果。...这种方式称为无管道正向CMD,因为CMD进程的输入输出是通过套接字而非管道进行的。...,并使用 bind() 和 listen() 函数将套接字绑定到本地 IP 和端口,然后不断地接受客户端的连接请求并为每个客户端请求启动一个新的 CMD 进程。...在 CMD 进程启动后,将其标准输入、输出和错误输出重定向到已连接的套接字上,这将使得客户端可以通过网络接收到 CMD 的输出结果。
3、每个进程拥有自己的标准输入流、标准输出流、标准错误流。 标准输入流(用 0 表示)可以作为进程执行的上下文(进程执行可以从输入流中获取数据)。...另外一种情况,可以把标准错误流重定向到标准输出流,然后再重定向到文件(ls1 &> out 或者 ls1 > out 2>&1)。...5、管道和重定向很像,但是管道是一个连接一个进行计算,重定向是将一个文件的内容定向到另一个文件,这二者经常会结合使用。...# 利用 nginx 的 access_log 统计网站的 PV(Page View),用户每访问一次页面就是一次 PV wc -l access.log 9、tee 指令从标准输入流中读取数据到标准输出流...# -a, --all:显示所有套接字(sockets) # -n, --numeric:不解析服务名称 # -l, --listening:显示监听状态的套接字(sockets) # -t, --tcp
系统调用的实现原理用户态到内核态的切换:当用户程序需要执行系统调用时,会从用户态切换到内核态。这种切换通常通过中断或异常机制实现。...-o :将输出重定向到文件。-p :跟踪指定的进程ID。...= 3:表示调用成功,并且返回了一个文件描述符(FD)为3的套接字。文件描述符是操作系统用来识别打开的文件、套接字和其他输入/输出资源的整数。2....EINPROGRESS:是一个特殊的错误码,表示连接操作已经开始,但目前尚未完成。这通常发生在非阻塞套接字上,或者在套接字被设置为非阻塞模式时。...使用-o参数将输出重定向到文件是一个好的习惯,这样可以避免输出过多导致屏幕滚动过快。 strace是一个功能强大的工具,可以帮助我们深入理解程序的行为,定位问题。
系统调用的实现原理 用户态到内核态的切换:当用户程序需要执行系统调用时,会从用户态切换到内核态。这种切换通常通过中断或异常机制实现。...-o :将输出重定向到文件。 -p :跟踪指定的进程ID。...= 3:表示调用成功,并且返回了一个文件描述符(FD)为3的套接字。文件描述符是操作系统用来识别打开的文件、套接字和其他输入/输出资源的整数。 2....EINPROGRESS:是一个特殊的错误码,表示连接操作已经开始,但目前尚未完成。这通常发生在非阻塞套接字上,或者在套接字被设置为非阻塞模式时。...使用-o参数将输出重定向到文件是一个好的习惯,这样可以避免输出过多导致屏幕滚动过快。 strace是一个功能强大的工具,可以帮助我们深入理解程序的行为,定位问题。
执行本地CMD实现使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。...无管道正向CMD和无管道反向CMD使用WSASocket函数创建TCP套接字,并将CMD进程的标准输入、输出和错误输出重定向到套接字的句柄上,通过网络连接实现远程命令执行功能。...首先来实现一个CMD命令行运行功能,通过使用CreatePipe创建匿名管道,并使用CreateProcess函数创建一个新的CMD进程,然后将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出...在创建进程时,可以通过STARTUPINFO结构体设置进程的一些属性,例如标准输入、标准输出和标准错误输出的重定向,启动窗口的显示方式等。...接着使用 ReadFile() 函数从管道的读取端读取输出数据,并将读取到的数据存储到一个缓冲区中。最后,它将缓冲区的内容拼接成一个完整的输出结果返回给调用者。
SIGPIPE (Broken pipe signal) 作用:当一个进程向一个已经关闭的管道或套接字写入数据时,操作系统会发送 SIGPIPE 信号给该进程。...守护进程行为:守护进程通常会忽略 SIGPIPE 信号。这是因为如果进程尝试向一个已经关闭的管道或套接字写入数据,默认情况下会导致进程终止。...SIGPIPE: 管道或套接字关闭时发送的信号,守护进程会忽略它,避免进程被意外终止。 通过忽略这些信号,守护进程能够在后台稳定运行,避免不必要的中断或退出。...关闭文件描述符:它关闭进程的标准输入、标准输出和标准错误输出,通常会将这些文件描述符重定向到某个日志文件或 /dev/null。...使用守护进程时的注意事项 文件描述符:守护进程会关闭标准输入、标准输出和标准错误输出,因此在守护进程中通常需要将这些描述符重定向到 /dev/null 或某个日志文件。
解析命令行参数的argparse库很多Python开发者在编写命令行工具时仍然使用sys.argv或自己编写的参数解析代码,但Python标准库中有一个强大的工具可以更轻松地处理命令行参数,那就是argparse...args.input and args.output: print(f"从 {args.input} 复制到 {args.output}")2....Python中的with语句可以创建一个上下文管理器,比如处理文件、数据库连接或网络套接字时非常有用。...函数的默认参数值很多人知道Python函数可以有默认参数值,但不是每个人都了解如何正确使用它们。默认参数值可以简化函数调用,同时允许在需要时提供自定义值。...示例:python复制代码from functools import lru_cache@lru_cache(maxsize=None) # 缓存所有调用结果def fib(n): if n <
解析命令行参数的argparse库很多Python开发者在编写命令行工具时仍然使用sys.argv或自己编写的参数解析代码,但Python标准库中有一个强大的工具可以更轻松地处理命令行参数,那就是argparse...args.input and args.output: print(f"从 {args.input} 复制到 {args.output}")2....Python中的with语句可以创建一个上下文管理器,比如处理文件、数据库连接或网络套接字时非常有用。...函数的默认参数值很多人知道Python函数可以有默认参数值,但不是每个人都了解如何正确使用它们。默认参数值可以简化函数调用,同时允许在需要时提供自定义值。...示例:python 代码解读复制代码from functools import lru_cache@lru_cache(maxsize=None) # 缓存所有调用结果def fib(n): if
netcat可以连接到远程TCP/UDP端口,指定本地端口,监听端口,扫描端口,重定向标准I/O到网络连接等等。...,如果你将标准输入重定向到 netcat,这可能会导致混淆。...例如,TCP连接由流套接字(SOCK_STREAM,从程序员的角度看)表示,而UDP连接由数据报套接字(SOCK_DGRAM)表示。...例如,MySQL数据库服务器mysqld可以接受来自远程主机的客户端连接,但通常也提供位于/var/run/mysqld/mysqld.sock的Unix域套接字。...您可以通过在“NAME”输出列中看到套接字来识别未命名套接字。
(stdin)从默认设备(通常是键盘)重定向到其他数据源(例如:文件或其他命令输出)的机制,它允许用户在命令行中使用文件作为输入,而无需手动输入数据,在Linux命令行中输入重定向通常使用"<"符号进行...grep "test" < input.txt 输出重定向 输出重定向是在Linux和Unix系统中将命令的标准输出(stdout)从默认设备(通常是屏幕)重定向到其他地方(例如:文件或其他命令)的机制...:这个部分表示将标准输入重定向到标准输出,这样设置之后受害者的Bash shell将会从攻击者的计算机接收输入(即执行命令) 此命令的整体功能是启动一个交互式Bash shell并将其连接到攻击者指定的...IP地址和端口上,执行此命令后,受害者的计算机将主动建立一个TCP连接到攻击者的机器,同时将所有输入和输出都重定向到这个连接中,使得攻击者可以直接在受害者的shell中执行命令 其他反弹 NC反弹shell...line中 do $line >&5 2>&1:在循环体内部 $line:表示执行从远程主机接收到的命令 >&5:将命令的标准输出重定向到文件描述符5,也就是发送回远程主机 2>&1:将标准错误(stderr
每个进程在启动时,通常有三个默认的文件描述符,它们称为标准文件描述符: 标准输入(stdin):文件描述符为 0,用于从用户或输入源读取数据。...最后在来看看重定向 2.2.2 重定向 现在我们将标志输出1给关闭了,然后再打开一个文件再往里面写点东西,看看会发生什么。...常见的重定向>, >>, < 重定向的本质: 3. write函数 write 函数是 Unix 和 Linux 系统中进行文件写入操作的系统调用,用于将数据从用户空间的缓冲区写入到文件或设备(例如文件...、管道、网络套接字)中。...4. read函数 read 是 Unix 和 Linux 系统中的一个系统调用,用于从文件或其他输入资源(如管道、网络套接字等)中读取数据到用户提供的缓冲区中。
指令:echo "hello CSDN" ①输入重定向 “<” 标准输入:键盘 输入重定向是指将一个文件的内容作为程序的输入,而不是只规定从键盘输入。所以被称为输入重定向....这里也就出现了最新的那一次内容: 追加重定向: “<<”: 示例: 向test.txt文件后追加,星期一到星期七. ③输出重定向 “>” 输出重定向: '“>” 定义: 在Linux...下,输出重定向指的是将程序的标准输出(屏幕)重定向到文件或者其他输出设备中,可以使用符号“>”或“>>”来实现。...(即多行空行只输出一行) 示例: 如果cat指令后面什么都不跟,则是默认从输入设备(键盘等)获取数据,显示到显示器中....另外,还有一些常用的选项,如: -type:按照文件类型进行搜索,常见的包括f(普通文件)、d(目录)、l(符号链接)、s(套接字)等; -size:按照文件大小进行搜索,可用的单位有b(字节)、k(千字节
例如一号硬盘的代码是 /dev/hda1等文件 字符设备文件,属性为[c],表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)、屏幕等 套接字文件,属性为[s],这类文件通常用在网络数据连接...,/表示目录,@表示符号连接,|表示FIFOs,=表示套接字(sockets)。...,*表示可执行程序,/表示目录,@表示符号连接,|表示FIFOs,=表示套接字(sockets)。...一般情况下,文件系统将磁盘空间划分为每1024个字节一组,也称为一块(有的Linux将512字节划为一块),编号从0到整个内存的最大块数。...新的输入设备:通常是指文件或者命令的执行结果 新的输出设备:通常是指文件 输入重定向: 命令符号格式作用命令 将指定文件作为命令的输入设备命令 从标准输入设备(键盘)中读入,直到遇到分界符才停止
WSASocket无管道反向CMD,与无管道正向CMD相反,这种方式是在远程主机上创建一个TCP套接字,并绑定到一个本地地址和端口上。...然后在本地主机上,使用WSASocket函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定向到套接字的句柄上。...这样,本地主机就可以通过网络连接到远程主机的套接字,发送CMD命令并获取命令输出结果。这种方式称为无管道反向CMD,因为CMD进程的输入输出是通过套接字而非管道进行的。...,当连接成功后则自动执行StartShell函数创建一个反弹后门,输出效果图如下所示;图片本文作者: 王瑞本文链接: https://www.lyshark.com/post/1bbae8df.html...版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。
WSASocket无管道反向CMD,与无管道正向CMD相反,这种方式是在远程主机上创建一个TCP套接字,并绑定到一个本地地址和端口上。...然后在本地主机上,使用WSASocket函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定向到套接字的句柄上。...这样,本地主机就可以通过网络连接到远程主机的套接字,发送CMD命令并获取命令输出结果。这种方式称为无管道反向CMD,因为CMD进程的输入输出是通过套接字而非管道进行的。...,当连接成功后则自动执行StartShell函数创建一个反弹后门,输出效果图如下所示; 本文作者: 王瑞 本文链接: https://www.lyshark.com/post/1bbae8df.html...版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。
我们将利用套接字和子进程模块与OS进行交互。我非常喜欢子进程模块,因为它允许您将STDOUT存储到一个变量中,该变量可以在脚本中进一步填充。...上面的代码基于我们在教程0x1中介绍的概念,但除了建立套接字连接之外,我们现在正在使用子进程模块执行命令。子进程模块非常方便,因为它允许您将STDOUT / STDERR从命令重定向到变量。...然后,我们可以对命令的输出进行编码,并通过网络套接字发送。关于XOR'n数据的好处是,您可以通过XOR'n相同的数据再次使用相同的键轻松地反转编码以恢复正常。...下面是一个监听器,用于捕获反向shell并正确解码/编码输入/输出,因此我们可以在终端上看到明文,但数据包内容是XOR编码的。 ? 这是一个非常有趣的Python用例,因为每个人都喜欢shell!...这可以通过使用PyInstaller将Python脚本编译为可执行文件来适应Windows。对于练习尝试使用base64而不是XOR编码/解码数据,这可以帮助您建立Python技能。
在本节,我们将继续深入探讨套接字通信技术,并介绍一种常见的用法,实现反向远程命令执行功能。对于安全从业者而言,经常需要在远程主机上执行命令并获取执行结果。...本节将介绍如何利用 _popen() 函数来启动命令行进程,并将输出通过套接字发送回服务端,从而实现远程命令执行的功能。...在实现反向远程命令执行时,我们可以使用 _popen(buf, "r") 函数来执行特定的命令,并将其输出重定向到一个可读的缓冲区中。...函数返回一个FILE结构体指针,该指针指向一个由命令产生的输出流。在执行命令时,该函数将创建一个进程来运行命令,并从该进程的标准输出流中读取输出。...最终,用户可以使用标准的文件读取操作(如 fread()、fgets() 等)从该文件指针中读取输出,有了该函数的支持再配合套接字即可实现远程命令执行的效果;14.2.1 服务端实现如下代码实现了一个基于
您也可以将sshd作为systemd中的套接字单元或使用inetd启动,但通常不建议这样做,因为服务器有时需要生成密钥文件,这个过程可能需要很长时间。...netcat可以连接到远程TCP/UDP端口,指定本地端口,监听端口,扫描端口,重定向标准I/O到网络连接等等。...,如果你将标准输入重定向到 netcat,这可能会导致混淆。...进程可以通过本地主机(127.0.0.1)上的常规 IP 网络进行通信,但通常会使用一种特殊类型的套接字,我们在第 3 章中简要介绍过,称为 Unix 域套接字 当一个进程连接到一个 Unix 域套接字时...注意 重要的是要记住 Unix 域套接字不是网络套接字,它背后没有网络。甚至不需要配置网络就可以使用它。 而且 Unix 域套接字不必绑定到套接字文件上。
领取专属 10元无门槛券
手把手带您无忧上云