Web安全-CTF中的常见命令总结_webctf 修改css

  • 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 : 指定 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
    : 添加自定义的 HTTP 头信息。
curl -H "Content-Type: application/json" http://example.com

  • -d, --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 : 将输出保存到文件。
curl -o output.txt http://example.com/file.txt

  • -L, --location: 自动跟随重定向。
curl -L http://example.com

  • -c, --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,用于执行命令和脚本:

命令/选项 描述
sh Unix 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

xxd命令与常见选项

xxd 是一个在 Linux 和其他类 Unix 操作系统中可用的命令行工具,用于转换文件的格式并以十六进制形式显示文件的内容。它可以执行多种操作,包括将二进制文件转换为十六进制格式、反向操作以及进行十六进制和ASCII之间的转换

选项 描述
-b 以二进制形式显示每个字节的内容。
-c cols 指定每行显示的列数,默认为 16 列。
-g cols 指定每个字节组之间的间隔,默认为 2 字节。
-l len 限制显示的字节数。
-s [+][-]seek 从指定的偏移量开始显示。
-u 使用大写字母表示十六进制值。
-v 显示 xxd 的版本信息。
-h 显示帮助信息。
-r 反向操作,将十六进制格式转换为二进制格式。
-p 以纯十六进制输出,不包含偏移量和ASCII码。

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img