Web安全-CTF中的常见命令总结

发布时间:2024年01月21日

Web安全-CTF中的常见命令总结

cat命令与常用选项

cat命令用于查看文件内容,并且将文件内容打印到标准输出流,并且在不跟上文件或跟上 -时将直接读取标准输入流:

r123@localhost:~$ cat -
123test
123test

如上所示,输入123test,回车后将打印此内容,并且换行继续等待输入

  • -n选项,给输出每行内容标记行号,空行也会进行编号
r123@localhost:~$ cat -n content.txt 
     1  只因你太美 baby
     2  只因你实在是太美 baby
     3  只因你太美 baby
     4  迎面走来的你让我如此蠢蠢欲动
     5
     6
     7  你是小黑子 我是真ikun
  • -E选项,将每行的末尾加上$(不会忽略换行符)
r123@localhost:~$ cat -E content.txt 
$ 因你太美 baby
$ 因你实在是太美 baby
$ 因你太美 baby
$ 面走来的你让我如此蠢蠢欲动
$
$
$ 是小黑子 我是真ikun

less命令与常用选项

less 命令是一个文本文件查看器,允许用户在终端逐页浏览文本文件。它提供了更多的功能和交互性,相较于简单的 cat 命令,适用于浏览较大的文本文件。

选项描述
不携带参数运行 less 后,按 “q” 键退出查看文件的模式。
/less 中搜索文件内容。
n在搜索结果中查找下一个匹配项。
N在搜索结果中查找上一个匹配项。
G将光标移动到文件的末尾。
=显示当前行号。
%显示当前浏览位置在文件中的百分比。
箭头键/空格键向下翻页。
b向上翻页。
h显示帮助信息
r123@localhost:~$ less content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
content.txt (END)

more命令与常用选项

more 命令是一个文本文件查看器,用于在终端逐页浏览文本文件。与 less 类似,但在功能上相对较简单,主要用于基本的文件浏览。

选项描述
运行 more 后,按 “q” 键退出查看文件的模式。
/more 中搜索文件内容。
b向上翻页。
=显示当前行号。
h显示帮助信息。
G将光标移动到文件的末尾。
r123@localhost:~$ more content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

tail命令与常用选项

tail 命令用于显示文件的末尾内容,默认情况下显示文件的最后 10 行(正序显示)。

选项描述
-n N显示文件末尾指定行数的内容。
-f实时监视文件末尾内容(不断更新)。
-c N以字节数显示文件末尾内容。
r123@localhost:~$ tail content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

head命令与常用选项

head 命令用于显示文件的开头部分,默认显示文件的前 10 行。

选项描述
-n N显示文件的前 N 行。
-c N显示文件的前 N 个字节。
-q静默模式,不显示文件名。
-v显示文件名。
-z显示文件开头的零字符,而不是文件的前 10 行。
r123@localhost:~$ head content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

sed命令的常用选项

sed是一个流式文本编辑应用,它只对输入进行一次传递,因此效率更高,需要注意的是它不会直接修改文件,需要进行重定向。接下来展示操作:

  • -e选项用于指定一个脚本文件,来处理输入的文本文件
  • -f选项用于指定一个脚本文件,来处理输入的文本文件
  • -n显示脚本处理完成后的内容

可用的脚本:

  • a :新增, a 的后面可以接字符串,默认在文件每一行末尾添加,或目标行的下一行
r123@localhost:~$ sed -e "aI am really Ikun" content.txt
只因你太美 baby
I am really Ikun
只因你实在是太美 baby
I am really Ikun
只因你太美 baby
I am really Ikun
迎面走来的你让我如此蠢蠢欲动
I am really Ikun

I am really Ikun
你是小黑子 我是真ikun
I am really Ikun

指定第一行后,并对其不修改文件进行验证:

r123@localhost:~$ sed -e "1aI am really Ikun" content.txt
只因你太美 baby
I am really Ikun
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
r123@DESKTOP-TIAOGA4:~$ cat content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
  • c :替换, c 的后面可以接字串,这些字串可以替换目标行范围的内容
r123@localhost:~$ sed -e "1cI am really Ikun" content.txt
I am really Ikun
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
  • d :删除,通常不接内容,删除指定范围的内容
r123@localhost:~$ cat content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
r123@localhost:~$ sed -e 2,3d  content.txt
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

删除含小黑子的行:

r123@localhost:~$ sed -e "/小黑子/d" content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动
  • i :插入, i 的后面可以接字符串,字符串默认被插入每一行或目标行的上一行
r123@localhost:~$ sed -e "i小黑子" content.txt
小黑子
只因你太美 baby
小黑子
只因你实在是太美 baby
小黑子
只因你太美 baby
小黑子
迎面走来的你让我如此蠢蠢欲动
小黑子

小黑子
你是小黑子 我是真ikun
  • p :打印,默认打印全部内容,将选择的行或范围内的内容打印。通常 p 会与参数 sed -n 同时使用

范围匹配与条件匹配

r123@localhost:~$ sed -n 2,4p content.txt
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动
r123@DESKTOP-TIAOGA4:~$ sed -n /只因/p content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby

输出全部内容

r123@localhost:~$ sed -n p content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
  • s :替换, c 的后面可以接字串,这些字串可以替换目标行范围的内容,不过它支持正则表达式

如下匹配1-3行的,并将你替换为

r123@localhost:~$ sed -e 1,3s/你/坤/g content.txt
只因坤太美 baby
只因坤实在是太美 baby
只因坤太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

strings命令的常用选项

strings 命令用于从二进制文件中提取可打印的字符序列。这通常用于查看二进制文件中的文本信息,例如查看可执行文件或库文件中的字符串。

  • -a:显示所有字符串,而不仅仅是具有可打印字符的字符串(无法显示中文)。
r123@localhost:~$ strings -a MyMainClass.java
public class MyMainClass{
    public static void main(String[] args){
        System.out.println("Hello World!!!");
    }
  • -n <min-len>:指定要显示的最小字符串长度。
  • -t <radix>:指定在输出中打印字符串当前分段位置时使用的进制(例如,-t d 表示十进制)。

如下的第一行 public class MyMainClass{终止于第26位,则第二行开头为27

r123@localhost:~$ strings -t d  MyMainClass.java
      0 public class MyMainClass{
     27     public static void main(String[] args){
     72         System.out.println("Hello World!!!");
    119     }
  • -e <encoding>:指定输入文件的字符编码。
  • S--encoding=S:表示将输出解释为单字节字符。
  • L--encoding=L:表示将输出解释为双字节字符。
  • B--encoding=B:表示将输出解释为四字节字符。
r123@localhost:~$ strings -e L MyMainClass.java
r123@localhost:~$ strings -e S MyMainClass.java
public class MyMainClass{
    public static void main(String[] args){
        System.out.println("Hello World!!!");
    }

curl命令的常用选项

通常来讲,curl命令与下面的的wget命令都可以用来外带数据到其他地方供我们查看,是主要的利用点

curl是一个命令行工具和库,用于在终端中进行数据传输。它支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等,可以用来发送和接收数据,执行各种网络操作。

  • -X, --request <command>: 指定 HTTP 请求方法,如 GET、POST、PUT 等。
r123@localhost:~$ curl -X GET https://www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> 
...

也可以直接发起请求:

r123@localhost:~$ curl https://www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>
...
  • -H, --header <header>: 添加自定义的 HTTP 头信息。
curl -H "Content-Type: application/json" http://example.com
  • -d, --data <data>: 发送 POST 请求时,用于传递数据。
curl -d "param1=value1&param2=value2" http://example.com/resource
  • -i, --include: 在输出中包含 HTTP 头信息。
r123@localhost:~$ curl -i https://www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 2443
Content-Type: text/html
...
  • -o, --output <file>: 将输出保存到文件。
curl -o output.txt http://example.com/file.txt
  • -L, --location: 自动跟随重定向。
curl -L http://example.com
  • -c, --cookie <cookie>: 发送请求时携带 cookie。
curl -b "cookie1=value1;cookie2=value2" http://example.com
  • -u, --user <user:password>: 提供用户名和密码进行身份验证。
curl -u username:password http://example.com
  • –insecure: 忽略 SSL 证书验证。
curl --insecure https://example.com

wget命令的常用选项

wget 是一个在命令行下使用的网络下载工具,用于从 Web 或 FTP 服务器下载文件。它支持 HTTP、HTTPS 和 FTP 协议,可以在终端中执行,也可以作为后台任务运行

  • 下载文件
wget http://example.com/file.txt
  • 下载并保存为指定文件名
wget -O output.txt http://example.com
  • 后台下载
wget -b http://example.com/file.txt
  • 断点续传
wget -c http://example.com/largefile.zip
  • 限速下载
wget --limit-rate=200k http://example.com/file.zip
  • 递归下载
wget -r http://example.com/directory/
  • 下载整个网站,并转换链接为本地链接
wget --convert-links -r http://example.com
  • 下载并跟随重定向(指定了重定向的最大次数)
wget --max-redirect=5 http://example.com
  • 只下载特定文件类型
wget -r --accept=pdf,doc http://example.com/documents/
  • 使用代理
wget --proxy=http://proxy.example.com:8080 http://example.com/file.txt
  • 禁用目录递归
wget --no-parent http://example.com/directory/

sh命令与常用选项

sh 是一个 Unix 操作系统中的命令行 shell,用于执行命令和脚本:

命令/选项描述
shUnix shell 命令行解释器
-c command在 shell 中执行指定的命令
-s使 sh 成为非交互式 shell
-n检查语法错误,不执行实际命令
-r启动受限制的 shell 模式
-e一旦命令返回非零退出状态,立即退出
-x打印每个要执行的命令和参数,用于调试
-v启用详细输出,显示每个命令的执行过程

除了上述的常用选项,我们也可以借助调试shell脚本那样来查看文件:

r123@localhost:~$ sh content.txt
content.txt: 1: 只因你太美: not found
content.txt: 2: 只因你实在是太美: not found
content.txt: 3: 只因你太美: not found
: not found: 4: 迎面走来的你让我如此蠢蠢欲动
: not found: 5:
content.txt: 6: 你是小黑子: not found

dd命令与常用选项

dd 命令是一个用于复制和转换文件的命令行工具。它通常用于对设备和文件进行底层操作,例如创建镜像、备份和复制数据。dd 的名称来源于 “数据定义”(data definition),并且功能非常强大,需要小心使用,因为它可以直接操作设备,而不提供太多安全性保护

选项描述
if=input_file指定输入文件的路径,即数据的来源。例如,if=/dev/sdb 表示从设备 /dev/sdb 读取数据。
of=output_file指定输出文件的路径,即数据的目标。例如,of=image.img 表示将数据写入名为 image.img 的文件。
bs=block_size指定块大小,即每次读取和写入的数据块大小。例如,bs=4K 表示使用 4KB 的块大小。
count=num_blocks指定要复制的块数。用于限制复制的数据量。例如,count=100 表示只复制 100 个块。
seek=skip_blocks在输出中跳过指定数量的块。用于在写入时跳过一些数据。例如,seek=10 表示在输出文件中跳过前 10 个块。
skip=skip_blocks在输入中跳过指定数量的块。用于在读取时跳过一些数据。例如,skip=5 表示在输入文件中跳过前 5 个块。
status=progress在复制过程中显示进度信息,包括已复制的字节数和速度。
  • 复制整个硬盘数据到镜像文件:dd if=/dev/sda of=image.img bs=4M
  • 创建随机数据文件:dd if=/dev/urandom of=random_data bs=1M count=10
  • 将镜像文件写入设备:dd if=image.img of=/dev/sdb bs=4M

如果运行 dd if=content.txt 命令而没有指定输出文件路径(of=output_file),dd 命令将默认将输入文件 content.txt 的内容写入标准输出(通常是终端或控制台),即获得如下结果:

r123@localhost:~$ dd if=content.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
0+1 records in
0+1 records out
152 bytes copied, 4.73e-05 s, 3.2 MB/s

rev命令的简单使用

rev 是一个 Linux 命令,用于反转文本中的字符顺序。它会将每一行的字符逆序排列,即将每个字符从最后一个字符到第一个字符的顺序进行反转,它不会更改原始文件的内容,而是在输出时显示反转后的结果。

r123@localhost:~$ rev content.txt
ybab 美太你因只
ybab 美太是在实你因只
ybab 美太你因只
动欲蠢蠢此如我让你的来走面迎

nuki真是我 子黑小是你

tac命令的简单使用

tac 命令用于反向显示文本文件的内容,即从最后一行到第一行。

r123@localhost:~$ tac content.txt
你是小黑子 我是真ikun

迎面走来的你让我如此蠢蠢欲动
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby

lzop命令与常用选项

老生常谈的tar命令不再赘述,lzop命令,gzip命令,bzip2命令与tar通常情况下用于在特殊情况下将flag目录打包,方便进行转移

lzop 是一个用于压缩和解压缩文件的命令行工具,它采用 Lempel-Ziv-Oberhumer 压缩算法。该工具主要用于在 Linux 系统中进行数据压缩,以减小文件大小并提高存储效率。

选项描述
-d解压缩文件。
-f强制执行,即使文件已存在也进行压缩。
-k保留原始文件。
-t测试压缩文件的完整性。
-q静默模式,减少输出信息。
r123@localhost:~/test$ lzop MyMainClass.java
r123@localhost:~/test$ ll
total 16
drwxr-xr-x 2 r123 r123 4096 Jan 20 23:52 ./
drwxr-x--- 3 r123 r123 4096 Jan 20 23:52 ../
-rw-r-Sr-- 1 r123 r123  127 Jan 17 22:52 MyMainClass.java
-rw-r-Sr-- 1 r123 r123  193 Jan 17 22:52 MyMainClass.java.lzo
r123@localhost:~/test$ lzop -df MyMainClass.java.lzo
r123@localhost:~/test$ ll
total 16
drwxr-xr-x 2 r123 r123 4096 Jan 20 23:52 ./
drwxr-x--- 3 r123 r123 4096 Jan 20 23:52 ../
-rw-r-Sr-- 1 r123 r123  127 Jan 17 22:52 MyMainClass.java
-rw-r-Sr-- 1 r123 r123  193 Jan 17 22:52 MyMainClass.java.lzo

gzip命令与常见选项

gzip 命令是用于对文件进行压缩的常见命令。它使用 Lempel-Ziv (LZ77) 压缩算法进行压缩,并且通常以 .gz 扩展名来标识压缩文件。

指令说明
gzip [文件]将文件压缩到当前目录(不会保留源文件)
-c将数据输出到标准输出中,并保留源文件
-d对压缩文件进行解压缩
-r递归压缩指定目录下以及子目录下的所有文件
-v显示每个压缩和解压缩文件的文件名和压缩比
r123@localhost:~$ gzip content.txt
r123@localhost:~$ ls
MyMainClass.java  content.txt.gz
r123@localhost:~$ gzip -dc content.txt.gz
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

bzip2命令与常用选项

bzip2 是一个用于数据压缩的命令行工具,它使用 Burrows-Wheeler 转换和 Huffman 编码进行压缩。它默认不保留源文件

指令说明
bzip2 [文件名]直接将文件压缩至当前目录
-k保留源文件
-d解压文件指令
-t检验文件完整性
-c将数据输出到标准输出中,并保留源文件
r123@localhost:~$ bzip2 content.txt
r123@localhost:~$ ls
MyMainClass.java  content.txt.bz2
r123@localhost:~$ bzip2 -d content.txt.bz2
r123@localhost:~$ ls
MyMainClass.java  content.txt
r123@localhost:~$ bzip2 -dc content.txt.bz2
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
r123@localhost:~$ ls
MyMainClass.java  content.txt.bz2

zcat命令的简单使用

zcat 命令是用于查看压缩文件内容的命令。它实际上是 zcat 程序的软链接,用于显示 gzip 或 bzip2 压缩文件的内容,而无需先解压缩文件。

r123@localhost:~$ zcat content.txt.gz
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
r123@localhost:~$ bzcat content.txt.bz2
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun

od命令与常用选项

od 命令用于以各种不同的格式(八进制、十进制、十六进制等)显示文件的内容。它通常用于查看二进制文件或文本文件的非文本部分。

选项描述
不携带参数默认以八进制格式显示文件内容,每组显示 16 个字节。
-x以十六进制格式显示文件内容。
-d以十进制格式显示文件内容。
-N N指定要显示的字节数。
-c以字符形式显示文件内容。
-A x显示文件偏移地址。
-t c以可读的 ASCII 码形式显示字符。
r123@localhost:~$ od MyMainClass.java
0000000 072560 066142 061551 061440 060554 071563 046440 046571
0000020 064541 041556 060554 071563 006573 020012 020040 070040
0000040 061165 064554 020143 072163 072141 061551 073040 064557
0000060 020144 060555 067151 051450 071164 067151 055547 020135
0000100 071141 071547 075451 005015 020040 020040 020040 020040
0000120 074523 072163 066545 067456 072165 070056 064562 072156
0000140 067154 021050 062510 066154 020157 067527 066162 020544
0000160 020441 024442 006473 020012 020040 076440 005015 000175
0000177
r123@localhost:~$ od -c MyMainClass.java
0000000   p   u   b   l   i   c       c   l   a   s   s       M   y   M
0000020   a   i   n   C   l   a   s   s   {  \r  \n                   p
0000040   u   b   l   i   c       s   t   a   t   i   c       v   o   i
0000060   d       m   a   i   n   (   S   t   r   i   n   g   [   ]
0000100   a   r   g   s   )   {  \r  \n
0000120   S   y   s   t   e   m   .   o   u   t   .   p   r   i   n   t
0000140   l   n   (   "   H   e   l   l   o       W   o   r   l   d   !
0000160   !   !   "   )   ;  \r  \n                   }  \r  \n   }
0000177

uniq命令与常用选项

uniq 命令用于过滤或报告文件中重复的行,是一种文本文件处理工具。

选项描述
不携带参数从输入中仅显示唯一的行,相同的行只显示一次。
-c同时显示每行重复出现的次数。
-d仅显示重复的行。
-u仅显示不重复的行。
-i在比较行时忽略大小写。
-f N忽略文件的前 N 个字段(以空格为分隔符)。
-s N忽略文件的前 N 个字符。
r123@localhost:~$ uniq -c MyMainClass.java
      1 public class MyMainClass{
      1     public static void main(String[] args){
      1         System.out.println("Hello World!!!");
      1     }
      1 }

bese64命令的常见用法

base64 命令用于对文件进行 Base64 编码或解码。Base64 编码是一种将二进制数据转换为 ASCII 字符的方法,常用于在文本协议中传输二进制数据。通常情况下我们也利用其来编写一句话木马绕过限制

r123@localhost:~$ echo "hello world" | base64
aGVsbG8gd29ybGQK
r123@localhost:~$ echo aGVsbG8gd29ybGQK | base64 -d
hello world
r123@localhost:~$ base64 content.txt
5Y+q5Zug5L2g5aSq576OIGJhYnkNCuWPquWboOS9oOWunuWcqOaYr+Wkque+jiBiYWJ5DQrlj6rl
m6DkvaDlpKrnvo4gYmFieQ0K6L+O6Z2i6LWw5p2l55qE5L2g6K6p5oiR5aaC5q2k6KCi6KCi5qyy
5YqoDQoNCuS9oOaYr+Wwj+m7keWtkCDmiJHmmK/nnJ9pa3VuDQo=
r123@localhost:~$ base64 content.txt > test.txt
r123@localhost:~$ base64 -d test.txt
只因你太美 baby
只因你实在是太美 baby
只因你太美 baby
迎面走来的你让我如此蠢蠢欲动

你是小黑子 我是真ikun
文章来源:https://blog.csdn.net/m0_74220316/article/details/135724603
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。