Linux攻防:CTF玩家的生存手册(非常详细)从零基础到精通,收藏这篇就够了!

命令?不存在的。CTF玩家的另类生存法则

命令?作用?谁在乎!
ls谁还用这玩意儿?不如直接 find . -maxdepth 1 -type f 来的实在,还能顺便过滤文件类型。
cdpushdpopd 才是王道,妈妈再也不用担心我迷路了!
pwd当前目录?直接 echo $PWD,简单粗暴。
mantldr 才是现代人的选择!简洁明了,告别冗长的官方文档。
apropos记不住命令?善用 grep 大法,apropos whatever | grep 'security',瞬间找到你想要的。
echo打印文本?不如玩点花样,echo -e "e[31mRED TEXTe[0m",让你的输出与众不同!
catbat 才是真爱!语法高亮,代码提示,用过就回不去了。
lessmost 了解一下?支持多窗口,历史记录,浏览体验更上一层楼。
mv重命名?小心覆盖!mv -i file1 file2,养成好习惯,避免手滑。
cp复制?权限问题了解一下!cp -a file1 file2,保留所有属性,避免玄学 bug。
rm删除?三思而后行!alias rm='rm -i',强制确认,拯救你的数据。
pshtop 才是可视化神器!实时监控,进程管理,一目了然。
topglances 了解一下?更全面的系统监控,CPU、内存、网络、磁盘,尽收眼底。
kill杀进程?温柔一点!kill -15 pid,给进程一个体面的告别。
ifconfigip addr 才是新时代的网络配置工具!更简洁,更强大。
ping网络畅通?不如试试 traceroute,看看数据包都经过了哪些节点。
netstatss 才是接班人!更快速,更高效,替代 netstat 指日可待。
ncncat 更安全!支持加密,身份验证,网络瑞士军刀再升级。
su切换用户?小心驶得万年船!sudo -i,获取 root 权限,安全第一。
touch创建空文件?不如 > file,更简洁,更高效。
mkdirmkdir -p dir/subdir,一次创建多级目录,告别繁琐操作。
chmod权限管理?数字表示法更直观!chmod 755 file,一目了然。
chown变更所有者?别忘了所属组!chown user:group file,一步到位。
nano / vim / emacsmicro 才是现代文本编辑器的代表!简单易用,功能强大。
exit退出 shell?不如 Ctrl+d,更快捷,更方便。
管道命令符 "|"管道?数据流的魔法!command1 | command2 | command3,将命令串联起来,实现复杂操作。

变量?不过是字符串的别名罢了

变量?意义?也就那样吧!
var=value赋值?其实就是把一个字符串贴上标签。
$var, ${var}取值?把标签撕下来,看看里面写了什么。
`cmd, $(cmd)`命令替换?执行一段代码,把结果当成字符串用。
'string'原样输出?别指望它会变魔术。
"string"可以展开的字符串?变量和命令替换的天堂。
$ var="test"; # 字符串 "test" 贴上了 "var" 标签
$ echo $var  # 撕下 "var" 标签,看到了 "test"

Bash快捷键?告别鼠标,拥抱效率

快捷键?意义?懒人的福音!
Up(Down)上下翻历史?不如 Ctrl+r,模糊搜索,精准定位。
Ctrl + c终止进程?简单粗暴,但要注意后果。
Ctrl + z挂起进程?留个后路,随时可以恢复。
Ctrl + d删除字符?不如 Ctrl+w,按单词删除,效率更高。
Ctrl + l清屏?眼不见心不烦,但历史记录还在。
Ctrl + a移动到行首?瞬间回到起点。
Ctrl + e移动到行尾?一步到位。
Ctrl + b按单词后移?精确定位,修改更方便。
Ctrl + f按单词前移?微调利器。

根目录?Linux世界的地图?

$ uname -a # 看看内核版本,不同的发行版可能略有差异

根目录结构?与其说是地图,不如说是Linux世界的骨架,支撑着整个系统的运行。

  • /bin、/sbin: 链接到/usr/bin?历史遗留问题!存放着用户和管理员常用的命令,是系统的基本组成部分。
  • /boot: 启动引导程序?至关重要!存放着引导操作系统启动所需的文件,一旦损坏,系统就无法启动。
  • /dev: 设备文件?一切皆文件!Linux将所有设备都抽象成文件,通过操作这些文件,可以控制硬件设备。
  • /etc: 配置文件?系统的灵魂!存放着各种配置信息,影响着系统的行为。
  • /etc/rc.d: 启动脚本?过时的技术!现在更多使用systemd来管理服务。
  • /home: 用户目录?隐私空间!每个用户都有自己的家目录,存放着个人文件和配置。
  • /lib、/lib64: 链接到/usr/lib?共享库!存放着系统和应用程序依赖的动态链接库,是程序运行的基础。
  • /mnt: 挂载点?临时访问!用于临时挂载其他文件系统,例如U盘、移动硬盘等。
  • /proc: 虚拟文件系统?实时信息!提供了一个访问内核数据的接口,可以查看系统信息和进程状态。
  • /root: 管理员目录?至高权力!root用户的家目录,拥有系统的完全控制权。
  • /srv: 服务数据?存放网络服务所需的数据。
  • /sys: sysfs文件系统?内核设备树的镜像!
  • /tmp: 临时文件?用完就扔!存放临时文件,系统重启后会被清空。
  • /usr: 用户程序?应用大本营!存放着大量的应用程序和文件,是系统的主要组成部分。
  • /usr/src: 内核源码?学习宝典!存放着内核源代码,是学习Linux内核的绝佳资源。
  • /var: 动态数据?日志中心!存放着经常变化的数据,例如日志文件、数据库等。

进程管理?掌控系统的脉搏?

  • top: 实时监控?不如htop!更友好的界面,更强大的功能。
  • ps: 进程状态?信息过载!不如ps auxf,树状显示进程关系,更清晰。

    • 查看进程状态?ps -aux | grep [file]?不如直接 pgrep file,简单粗暴。
    • kill: 结束进程?小心误杀!kill -9 [PID],强制结束,但可能导致数据丢失。

UID和GID?用户的身份证明?

$ id root # 查看root用户的UID和GID

UID为0的root用户?拥有至高无上的权力,但也要小心使用,避免误操作。普通用户?权限有限,但更安全。GID?用户组,方便管理权限。

$ cat /etc/group # 查看用户组信息

所有用户信息?/etc/passwd?密码呢?/etc/shadow!只有root用户才能访问,保障安全。

$ sudo cat /etc/shadow # 以root权限查看密码文件

sudo?普通用户也能行使root权限?小心配置不当,导致安全漏洞。su?切换用户,但要输入密码,比较麻烦。

$ whoami # 我是谁?

whoami?显示当前用户名,简单实用。普通用户以$开头?root用户以#开头?象征着不同的权限。

权限设置?Linux世界的通行证?

$ ls -l / # 查看根目录的权限

权限字符串?rwx?分别代表读、写、执行权限。第一列?文件类型!l?链接文件!d?目录!-?普通文件!

  • r?读取权限?数字代号4?
  • w?写入权限?数字代号2?
  • x?执行权限?数字代号1?

chmod?修改权限?

  • -R?递归处理?小心使用,避免误操作。
  • <权限范围>+<权限设置>?赋予权限?
    • $ chmod a+r [file]?赋予所有用户读取权限?
  • <权限范围>-<权限设置>?取消权限?
    • $ chmod u-w [file]?取消所有者写入权限?
  • <权限范围>=<权限设置>?指定权限?
    • $ chmod g=x [file]?指定组权限为可执行?
    • $ chmod o=rwx [file]?指定其他人权限为可读、可写和可执行?

字节序?计算机世界的左右脑?

Big-endian?小端?MSB?LSB?听起来很复杂?其实就是数据在内存中存储的顺序。

MSB (Most Significan Bit/Byte):最重要的位或最重要的字节。

Intel处理器?Little-endian!PowerPC?Big-endian!TCP/IP协议?Big-endian!Java虚拟机?Big-endian!

gdb-peda$ x/w 0xffffd584 # 查看内存中的数据

输入输出?程序与世界的桥梁?

使用命令的输出作为可执行文件的输入参数?管道的妙用!

文件描述符?内核的索引?

文件描述符?内核管理文件的索引?一切皆文件?普通文件、目录文件、链接文件、设备文件?

标准文件描述符?

  • 0?标准输入?键盘!
  • 1?标准输出?屏幕!
  • 2?标准错误?屏幕!

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

核心转储?程序崩溃后的遗骸?

核心转储?程序异常终止后的内存快照?

会产生核心转储的信号?

开启核心转储?

  • ulimit -c?查看当前设置?0?关闭!unlimited?开启!
  • 修改/etc/security/limits.conf?永久开启?
#<domain> <type> <item> <value>

修改转储文件保存路径?

  • /proc/sys/kernel/core_uses_pid?核心转储文件名变为core.[pid]?
    • # echo 1 > /proc/sys/kernel/core_uses_pid
  • /proc/sys/kernel/core_pattern?控制生成核心转储文件的保存位置和文件名格式?
    • # echo /tmp/core-%e-%p-%t > /proc/sys/kernel/core_pattern

gdb调试核心转储文件?

gdb [filename] [core file]
$ cat core.c // 例子代码

调用约定?函数间的秘密协议?

函数调用约定?参数传递的方式?内核接口?用户接口?32位Linux?64位Linux?

内核接口?

x86-32?寄存器传递参数?eax?syscall_number!ebx、ecx、edx、esi、ebp?参数!eax?返回值!

x86-64?rdi、rsi、rdx、r10、r8、r9?参数!syscall指令?rax?系统调用编号和返回值!

用户接口?

x86-32?栈传递参数?最后一个参数先入栈?

x86-64?寄存器传递参数?MEMORY类型?栈传递!INTEGER类型?rdi、rsi、rdx、rcx、r8、r9?超过6个参数?栈传递!

环境变量?程序的幕后推手?

环境变量?name=value?定义程序的运行环境?

分类?

  • 按照生命周期划分?
    • 永久环境变量?修改配置文件,永久生效?
    • 临时环境变量?export命令,当前终端生效?
  • 按照作用域划分?
    • 系统环境变量?所有用户生效?
    • 用户环境变量?特定用户生效?

设置方法?

  • /etc/profile?所有用户永久生效?
    bash # Set our default path
    source /etc/profile?使其生效?
  • ~/.bash_profile?当前用户永久生效?
  • export?当前终端临时生效?

常用变量?

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

LD_PRELOAD?指定优先加载的动态链接库?pwn题目的利器!

LD_PRELOAD=/path/to/libc.so ./binary
$ ldd /bin/true # 查看依赖的动态链接库

动态链接库?ld.so?重定位?ELF Header?INTERP字段?

$ file /lib/x86_64-linux-gnu/libc-2.23.so # 查看文件类型

environ?libc中定义的全局变量?指向环境变量表?栈地址?

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

procfs?内核的窗口?

procfs?Linux内核提供的虚拟文件系统?访问内核数据的接口?

文件?作用?
/proc/cmdline启动时传递给内核的参数?
/proc/cpuinfoCPU相关信息?
/proc/crypto已安装的密码算法?
/proc/devices已加载的块设备和字符设备?
/proc/interrupts中断号列表?
/proc/kcore系统物理内存?ELF核心文件格式?
/proc/meminfo内存利用状况?
/proc/mounts挂载点列表?
/proc/modules已加载的内核模块?
/proc/slabinfoslab缓存信息?
/proc/[pid]进程目录?
/proc/[pid]/cmdline启动当前进程的完整命令?
/proc/[pid]/exe指向启动当前进程的可执行文件的符号链接?
/proc/[pid]/root当前进程运行根目录的符号链接?
/proc/[pid]/mem当前进程占用的内存空间?不能被用户读取?
/proc/[pid]/maps进程的内存区域映射信息?最常用?
/proc/[pid]/stack当前进程的内核调用栈信息?
/proc/[pid]/auxv传递给进程的解释器信息?
/proc/[pid]/environ进程的环境变量?
/proc/[pid]/fd进程打开文件的情况?
/proc/[pid]/status进程的状态信息?
/proc/[pid]/task进程的每一个线程的相关信息?
/proc/[pid]/syscall进程正在执行的系统调用?

黑客/网络安全学习包

资料目录

  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、付费专栏及课程。

余额充值