CTF竞赛权威指南Pwn篇-Linux安全机制

Linux基础

Linux常用命令

ls
cd
pwd
uname
whoami
man
find
echo
cat
less
head/tail
grep
cut
diff    # 比较文本差异
mv
cp
rm
ps
top
kill
ifconfig
ping
netstat
nc
su
touch
mkdir
chmod
chown
vim
history
exit

使用变量:
var=value    # 给变量var赋值为value
$var,${var}  # 取变量的值
`cmd`,$(cmd)  # 命令替换标准输出
'string'      # 非替换字符串
"string"      # 可替换字符串

示例:
$ var="test"
$ echo $var
test
$ echo 'This is a $var'
This is a $var
$ echo "This is a $var"
This is a test

$ echo `date`
Sat Apr 27 23:53:27 PDT 2024
$ $(whoami)
$ $(bash)

$ echo $0
bash
$ $($0)     # 进入bash终端

需要了解:

  • 数据流、管道和重定向
  • Linux目录结构
  • 用户和组以及文件权限
  • 环境变量exportenv/etc/profile/etc/environment~/.bashrc
  • 可执行文件依赖库: Linux中使用ldd /bin/true查看/bin/true的依赖库文件

procfs文件系统

procfs文件系统是Linux内核提供的虚拟文件系统,为访问内核数据提供的接口。之所以说是虚拟文件系统,是因为它只占用内存而不占用存储。
用户可以通过procfs查看有关系统硬件及当前正在运行的进程的信息,甚至可以通过修改其中的某些内容来改变内核的运行状态。

比较总要的文件

cmdline       # 启动进程的命令行
exe           # 最初的可执行文件
root          # 进程的根目录
maps          # 通常我们无法直接读取mem内存空间的内容,可以通过maps来查看一些内存映射信息
stack         # 内核调用栈,需要再编译是启动CONFIG_STACKTRACE选项才会显示
auxv          # 传递给进程的解释器信息,需要使用`xxd -e -g8`查看
environ       # 进程的环境变量
fd            # 进程打开的文件
fdinfo        # 进程打开的文件信息
status        # 进程的基本信息
cwd           # 当前工作目录
syscall       # 正在执行的系统调用
task          # 进程包含的所有线程

字节序

计算机中采用了两种字节存储机制:大端(Big-endian)和小端(Little-endian)。
大端就是存储的时候放在低地址,小端就是存储时放在高地址,举个例子,将十六进制整数0x12345678存入以1000H开始的内存,大端和小端的存储形式部分如下:

地址 大端存储 小端存储
1000H 12H 78H
1001H 34H 56H
1002H 56H 34H
1003H 78H 12H
posted @ 2024-04-28 14:55  Junglezt  阅读(15)  评论(0编辑  收藏  举报