CTF的Linux基础(非常详细)从零基础到精通,收藏这篇就够了!

别再死记硬背!CTF常用Linux命令的“叛逆”解读

命令传统解释(听着就头大)CTF老鸟的“人话”版本
ls显示目标列表“看看这里有啥”,就像你逛街一样,只不过是命令行版的。
cd [path]切换工作目录“走你!去XX目录”,相当于游戏里的传送技能。
pwd显示当前工作目录的绝对路径“我现在在哪儿?”,迷路的时候用的,免得你瞎转。
man [command]查看命令帮助“这玩意儿咋用?”,官方说明书,虽然枯燥但关键时刻救命。
apropos [whatever]查找关键字相关命令“我想找个XX命令,但不知道叫啥”,当你只记得功能,不记得名字的时候。
echo [string]打印文本“说句话!”,把你想显示的内容打印出来,调试脚本常用。 -e 参数?那是让你玩转义字符的,比如换行啥的。
cat [file]连接并打印文件内容“把这文件给我看看!”,简单粗暴地显示文件内容,小文件专用。
less [file]浏览文件内容“慢慢看,别着急”,适合大文件,可以上下翻页,搜索。
mv [file1] [file2]移动或重命名文件“改名换姓,乾坤大挪移!”,文件搬家或改名。
cp [file1] [file2]复制文件“克隆一个!”,复制文件,相当于Ctrl+C, Ctrl+V。
rm [file]删除文件“抹杀!”,删除文件,小心误删,没有后悔药。
ps查看进程状态“谁在偷偷运行?”,查看当前运行的进程,揪出幕后黑手。
top实时查看系统运行情况“系统体检报告!”,动态监控系统资源使用情况,CPU、内存一览无余。
kill杀死进程“斩立决!”,结束指定进程,PID就是它的身份证号。
ifconfig查看/设置网络设备“我是不是连上网了?”,查看网络接口信息,IP地址、网卡状态。
ping测试主机连通性“喂?有人吗?”,测试网络连通性,看看目标主机是否活着。
netstat显示网络连接信息“谁在跟我通信?”,查看网络连接、路由表,分析网络流量。
nc (netcat)建立TCP/UDP连接或监听端口“瑞士军刀!”,网络工具,可以连接、监听、传输数据,CTF神器。
su切换用户身份“变身!”,切换到其他用户,需要密码。
touch [file]创建空文件“无中生有!”,创建一个空文件,占坑用。
mkdir [dir]创建目录“圈地运动!”,创建一个目录,存放文件。
chmod变更文件权限“给它穿什么衣服?”,修改文件权限,决定谁能读、写、执行。
chown变更文件所有者“这文件是谁的?”,修改文件所有者,权力转移。
nano / vim / emacs文本编辑器“写字板!”,在命令行编辑文本文件,各有千秋,选你所爱。
exit退出shell“拜拜!”,退出当前shell会话。
管道符 |连接命令“流水线!”,将一个命令的输出作为另一个命令的输入,数据处理利器。

变量:Linux的“小纸条”和“暗号”

语法解释CTF实战理解
var=value给变量赋值“写个小纸条”,把value贴在var上,方便后面用。
$var, ${var}取变量的值“拿出小纸条”,看看var上写着啥。 ${var}更严谨,防止歧义。
cmd, $(cmd)命令替换“执行暗号!”,先执行cmd命令,然后把结果当成字符串用。
'string'非替换字符串“原封不动!”,字符串里的内容就是它本身,别想搞事情。
"string"可替换字符串“灵活应变!”,字符串里的变量会被替换成实际的值。
$ var="test"; # 定义一个变量var,赋值为"test"
$ echo $var   # 输出变量var的值,结果是"test"

Bash快捷键:手残党的福音,效率党的利器

快捷键功能CTF场景应用
Up/Down上/下 一条指令“时间机器!”,快速浏览历史命令,避免重复输入。
Ctrl + c终止当前进程“紧急停止!”,当程序卡死或跑飞时,强制结束。
Ctrl + z挂起当前进程“暂停一下!”,把进程放到后台,可以先干点别的。用fg命令唤醒。
Ctrl + d删除光标处字符“擦擦擦!”,删除光标所在位置的字符。
Ctrl + l清屏“眼不见心不烦!”,清理屏幕,保持界面整洁。
Ctrl + a移动到行首“一键回到开头!”,快速移动光标到行首。
Ctrl + e移动到行尾“一键到达结尾!”,快速移动光标到行尾。
Ctrl + b按单词后移(向左)“小步快跑!”,按单词移动光标,比方向键更高效。
Ctrl + f按单词前移(向右)“小步快跑!”,按单词移动光标,比方向键更高效。

Linux根目录:探秘操作系统的“骨架”

先别急着uname -a,看看你的发行版是啥,根目录可能略有不同。

  • /bin, /sbin: “核心工具箱”,放着最基础的命令,比如ls, cp。 链接到/usr/bin? 别慌,知道它们是干啥的就行。
  • /boot: “启动舱”,引导操作系统启动的文件,动了这里系统就崩了。
  • /dev: “设备中心”,所有硬件设备的入口,但不是驱动程序! 只是个“传送门”。
  • /etc: “配置文件大本营”,系统和软件的各种配置,改坏了可能导致系统出问题。
  • /etc/rc.d: “启动脚本集”,系统启动/关闭时执行的脚本,别乱改。
  • /home: “用户地盘”,普通用户的个人目录,存放用户文件。
  • /lib, /lib64: “共享仓库”,系统和软件依赖的动态链接库,链接到/usr/lib? 见怪不怪。
  • /mnt: “临时挂载点”,临时挂载其他文件系统,比如U盘。
  • /proc: “内存实时监控”,虚拟目录,反映系统内存状态,直接访问可以获取系统信息。
  • /root: “管理员老巢”,root用户的个人目录,权限最高。
  • /srv: “服务数据站”,存放服务启动后需要提取的数据。
  • /sys: “内核设备树”,反映内核设备信息的文件系统。
  • /tmp: “公共厕所”,存放临时文件,重启后可能被清空。
  • /usr: “应用软件集”,大部分应用程序和文件都在这里。
  • /usr/src: “内核源代码库”,内核源代码存放地,编译内核需要用到。
  • /var: “日志记录仪”,存放各种服务的日志信息,排错利器。

进程管理:掌控程序的“生死大权”

  • top: “实时战况直播”,动态查看系统整体运行情况,CPU、内存、进程信息一目了然。
  • ps: “进程快照”,报告当前系统的进程状态,搭配kill指令,随时可以“处决”不必要的程序。ps -aux | grep [file]? 查找特定进程的利器!
  • kill: “进程终结者”,删除执行中的程序或工作。kill [PID]? 一刀毙命!

UID和GID:Linux世界的“身份认证”

Linux是多用户系统,每个用户都有UID和GID,就像身份证号一样。

  • UID: 用户唯一标识。
  • GID: 用户组标识,一个用户可以属于多个组。

id root? 查看root用户的UID和GID,root权限至高无上,UID为0。 普通用户? UID一般从1000开始。

/etc/group? 存储GID信息。 /etc/passwd? 存储用户信息(除了密码)。 /etc/shadow? 存储加密后的用户密码,只有root权限才能访问!

sudo? 普通用户也能以root身份执行命令,但要小心使用。 su? 切换用户,需要输入目标用户密码。

whoami? “我是谁?”,显示当前有效用户名。 $? 普通用户提示符。 #? root用户提示符。

权限设置:给文件穿上“防护服”

Linux的文件权限控制基于读(r)、写(w)、执行(x)三种权限。

ls -l [file]? 查看文件或目录的详细信息,第一栏就是权限字符串。

  • r: 读取权限,数字代号为4。
  • w: 写入权限,数字代号为2。
  • x: 执行权限,数字代号为1。

权限字符串分为三组:所有者权限、组权限、其他人权限,顺序为rwx。

chmod? 修改文件权限,可以针对所有者(u)、所属组(g)、其他人(o)、所有人(a)进行设置。

  • chmod a+r [file]: 赋予所有用户读取权限。
  • chmod u-w [file]: 取消所有者写入权限。
  • chmod g=x [file]: 指定组权限为可执行。
  • chmod o=rwx [file]: 指定其他人权限为可读、可写和可执行。

-R? 递归处理,修改目录及其子目录下的所有文件权限。

字节序:理解数据的“排列方式”

计算机存储数据有两种方式:大端(Big-endian)和小端(Little-endian)。

  • 大端: MSB (最高有效字节) 放在低地址。
  • 小端: LSB (最低有效字节) 放在低地址。

Intel处理器用小端,PowerPC用大端,TCP/IP协议和Java虚拟机用大端。

举个例子:0x12345678 存在内存里会是啥样? 看你的机器是啥字节序了!

gdb-peda$ x/w 0xffffd584? 用GDB查看内存,一目了然!

输入输出:数据的“高速公路”

命令的输出可以作为另一个命令的输入参数,就像流水线一样。

文件描述符:Linux的“文件索引”

Linux里一切皆文件,文件描述符是内核用来管理打开文件的索引,是一个非负整数。

  • 0: 标准输入 (stdin)
  • 1: 标准输出 (stdout)
  • 2: 标准错误输出 (stderr)

fork()? 创建子进程会继承父进程打开的文件表,可能导致安全问题! vfork()? 子进程拥有自己的进程表项,更安全。

核心转储(Core Dump):程序崩溃后的“遗书”

程序异常终止时,操作系统会把当时的内存、寄存器状态等信息记录下来,保存在一个文件里,这就是Core Dump。

什么情况下会产生Core Dump? 各种信号! 比如SIGSEGV (段错误),SIGABRT (中止信号)等等。

ulimit -c? 查看是否开启Core Dump。 默认是关闭的! ulimit -c unlimited? 开启Core Dump。

/etc/security/limits.conf? 修改这个文件可以永久开启Core Dump。

/proc/sys/kernel/core_uses_pid? 可以让Core Dump文件名带上PID。 /proc/sys/kernel/core_pattern? 控制Core Dump文件的保存位置和文件名格式。

gdb [filename] [core file]? 用GDB调试Core Dump文件,找到程序崩溃的原因。

调用约定:函数调用的“秘密协议”

函数调用约定规定了函数调用时如何传递参数。

  • 内核接口:

    • x86-32: 寄存器传递参数 (eax, ebx, ecx, edx, esi, ebp)。
    • x86-64: 寄存器传递参数 (rdi, rsi, rdx, r10, r8, r9)。
  • 用户接口:

    • x86-32: 栈传递参数。
    • x86-64: 寄存器传递参数 (rdi, rsi, rdx, rcx, r8, r9),超过6个参数用栈传递。

环境变量:程序的“运行环境”

环境变量是name=value形式的字符串,定义了程序的运行环境。

  • 生命周期:

    • 永久环境变量: 修改配置文件,永久生效。
    • 临时环境变量: 使用export命令,当前终端生效,关闭终端失效。
  • 作用域:

    • 系统环境变量: 对所有用户生效。
    • 用户环境变量: 对特定用户生效。

/etc/profile? 修改这个文件可以设置系统环境变量。 ~/.bash_profile? 修改这个文件可以设置用户环境变量。 export? 定义临时环境变量。

echo $PATH? 打印PATH环境变量。 env? 打印所有环境变量。 set? 打印所有本地定义的shell变量。 unset? 清除环境变量。

LD_PRELOAD:动态链接库的“秘密武器”

LD_PRELOAD可以定义程序运行前优先加载的动态链接库,PWN题里经常用到,可以指定特定的libc。

LD_PRELOAD=/path/to/libc.so ./binary? 强制程序使用指定的libc。

注意:动态链接库需要使用ld.so进行重定位,版本不匹配可能会出错!

environ:泄露栈地址的“后门”

libc中定义的全局变量environ指向环境变量表,环境变量表存在于栈上,所以通过environ指针的值就可以泄露出栈地址!

gdb-peda$ vmmap libc? 查看libc的内存映射。

procfs:窥探内核的“窗口”

procfs是Linux内核提供的虚拟文件系统,用于访问系统内核数据,不占用存储空间,只占用内存。

文件作用CTF应用场景
/proc/cmdline启动时传递给内核的参数分析启动参数,寻找漏洞利用点。
/proc/cpuinfoCPU信息了解CPU架构,选择合适的Payload。
/proc/meminfo内存信息查看内存使用情况,判断是否存在内存泄漏。
/proc/[pid]/cmdline启动进程的完整命令了解进程启动方式,分析程序行为。
/proc/[pid]/exe指向可执行文件的符号链接找到进程对应的可执行文件。
/proc/[pid]/maps进程的内存区域映射信息查看内存布局,寻找可利用的内存地址。
/proc/[pid]/environ进程的环境变量获取环境变量,判断是否存在漏洞。
/proc/[pid]/fd进程打开的文件情况查看进程打开的文件,分析文件操作。
/proc/[pid]/status进程的状态信息了解进程状态,判断是否存在异常。

总而言之,procfs是CTF选手分析程序行为、寻找漏洞的重要工具! 别死记硬背,多实践,才能真正掌握Linux的精髓!
```

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值