文档大致情况:总结比赛和日常了解到的一些linux知识
查看主机信息
参考文章:https://blog.csdn.net/qq_31278903/article/details/83146031
1 2 3 4 5 6 7 8 9 10 11
| ifconfig uname -a (Linux查看版本当前操作系统内核信息) cat /proc/version (Linux查看当前操作系统版本信息) cat /etc/issue 或 cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) cat /proc/cpuinfo 或 lscpu (Linux查看cpu相关信息,包括型号、主频、内核信息等) getconf LONG_BIT (Linux查看版本说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit) hostname (查看服务器名称) lsblk (查看磁盘信息 - 列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息) fdisk -l (观察硬盘实体使用情况,也可对硬盘分区) df -k (用于显示磁盘分区上的可使用的磁盘空间) echo $? # 输出上条指令的执行状态,0代表执行成功,其他数字执行失败
|
frp维护
1 2 3
| netstat -anp |grep frp #查看frp连接情况/进程号 ps -e |grep frp #查看frp进程 lsof -i | grep frp #查看frp连接情况/进程号(更直观)
|
客户端Frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [common] server_addr = 远端ip server_port = 11100 token = QaXnB666!@#
#[ssh] #type = tcp #local_ip = 127.0.0.1 #local_port = 22 #remote_port = 16001
[socks5] type = tcp plugin = socks5 remote_port = 17891
|
服务端Frps.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [common] bind_port = 11000 dashboard_port = 11500 dashboard_user = fr3nky dashboard_pwd = Fr3Nky
vhost_http_port = 9001 max_pool_count = 50
token = QaXnB666!@# tcp_mux = true
log_file = /root/frp/log/frps.log log_level = info log_max_days = 3
authentication_timeout = 0
|
运行脚本frp.sh
1 2 3
| #! /bin/bash sleep 30 /home/fr3nky/frp/frpc -c /home/fr3nky/frp/frpc.ini >> /home/fr3nky/frp/log.txt &
|
vi和vim
yum/apt install vim
编辑模式 (insert mode),按下“i, o, a, r”等任何一个字母后进入编辑模式,出现 –insert–
命令行命令模式 (command-line mode),输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列
1 2 3 4
| :wq! w: write q: quit !: 强制
|
按键说明
h 或 向左方向键(←);j 或 向下方向键(↓);j 或 向下方向键(↓);l 或 向右方向键(→)
向下移动 30 列, 可以使用 “30j” 或 “30↓” 的组合按键
[Ctrl] + [f]:相当于 [Page Down]
[Ctrl] + [b]:相当于 [Page Up]
[Ctrl] + [d]:屏幕“向下”移动半页
[Ctrl] + [u]:屏幕“向上”移动半页
+:光标移动到非空白字符的下一列
-:光标移动到非空白字符的上一列
n<space>:那个 n 表示“数字”,例如 20 。按下数字后再 按空白键,光标会向右移动这一列的 n 个字 符。例如 20<space> 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]:这是数字“ 0 ”:移动到这一列的最前面字符处 (常用)
$ 或功能键[End]:移动到这一列的最后面字符处(常用)
H:光标移动到这个屏幕的最上方那一列的第一个字符
M:光标移动到这个屏幕的中央那一列的第一个字符
G:移动到这个文件的最后一列(常用)
nG:n 为数字。移动到这个文件的第 n 列。例如 20G 则会移动到这个文件的第 20 列(可配合 :set nu)
gg:移动到这个文件的第一列,相当于 1G(常用)
查找
在 normal 模式下按下 /
即可进入查找模式,输入要查找的字符串并按下回车。 Vim 会跳转到第一个匹配。按下 n
查找下一个,按下 N
查找上一个。
Vim 查找支持正则表达式,例如 /vim$
匹配行尾的 "vim"
。 需要查找特殊字符需要转义,例如 /vim\$
匹配 "vim$"
。
注意查找回车应当用 \n
,而替换为回车应当用 \r
(相当于 <CR>
)。
其他查找模式
?
(按住 Shift + /
)往上查找。
q/
查看查找历史,选中一项后回车可以重新查找。
q?
查看向上查找历史。
SELinux安全
参考 鸟哥的linux私房菜
https://blog.csdn.net/weixin_42741132/article/details/82533665
https://blog.51cto.com/u_13570193/2093299
Security Enhanced Linux
SELinux 是通过 MAC【委任式存取控制 (Mandatory Access Control, MAC)】的方式来控管程序,他控制的主体是程序, 而目标则是该程序能否读取的“文件资源”。
修改文件的SELinux标签的命令:chcon ;restorecon
有待补充
/proc(进程的状态信息)
https://blog.csdn.net/juzihongle1/article/details/77184541
/proc/self/cwd 当前目录
/proc/pid/cwd 程序运行目录
/proc/pid/cmdline 程序运行指令
/proc/net/arp 读内网地址
…
chattr/lsattr 文件隐藏属性
https://www.runoob.com/linux/linux-comm-lsattr.html
https://www.runoob.com/linux/linux-comm-chattr.html
除了基本r, w, x权限外,在Linux传统的Ext2/Ext3/Ext4文件系统下,我们还可以设置其他的系统隐藏属性,其他的文件系统可能就无法完整的支持这个指令了,例如 xfs 仅支持部份参数而已。这部份可使用 chattr 来设置,而以 lsattr 来查看。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@localhost SELearning]# ll test.txt -rw-r--r--. 1 root root 12 2月 28 18:05 test.txt [root@localhost SELearning]# ls -l test.txt -rw-r--r--. 1 root root 12 2月 28 18:05 test.txt [root@localhost SELearning]# lsattr test.txt ---------------- test.txt [root@localhost SELearning]# chattr +i test.txt [root@localhost SELearning]# rm -f test.txt rm: 无法删除"test.txt": 不允许的操作 [root@localhost SELearning]# lsattr test.txt ----i----------- test.txt [root@localhost SELearning]# chattr -i test.txt [root@localhost SELearning]# rm test.txt rm:是否删除普通文件 "test.txt"?n [root@localhost SELearning]# ls test.txt test.txt.bak [root@localhost SELearning]# lsattr test.txt ---------------- test.txt
|
资源备份指令
打包
1
| tar -czvf src.tar.gz /var/www/html
|
下载
1
| scp -P port user@ip:/dirName fileName
|
解包
1 2
| tar -xzvf src.tar.gz tar -xzvf src.tar.gz -C /home
|
上传
1
| scp -P port fileName user@ip:/dirName
|
端口转发
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 29 30 31
| 方法一(推荐): 本地访问题目 通过ssh进行端口转发
命令:ssh -L 本地port:赛题IP:赛题port 操作机用户@操作机IP -p 操作机port 实例: 操作机资源为 202.10.10.123:45678 登录用户名dawd4321 密码00xx123 赛题地址为:192.168.12.5:43215 本地空闲可使用端口为9999 ssh -L 9999:192.168.12.5:43215 [email protected] -p 45678 输入登录密码,登录成功
10.0.100.230:47001 47.106.187.217:40022 dawd506941 7a9557 ssh -L 10001:10.0.100.230:47001 [email protected] -p 40022
在本地nc/telnet 127.0.0.1 9999即可以本地调试pwn题
如果转发的是web题目,可以直接使用浏览器访问9999端口。
方法二: 通过操作机做跳板进行 socks5 代理进行访问 本地 PC 执行命令: ssh -CqTnN -D localhost:15567(随便一个非常用端口) {操作机账号}@{操作机地址} -p {操作机端口} 回车后输入 操作机密码 浏览器(以 firefox 为例)设置-首选项-网络设置-手动配置 代理-socks主机 127.0.0.1 端口 15567(刚才在ssh命令 中指定的非常用端口) 浏览器地址栏输入 web 题的 内网地址:端口 即可访问题目 系统全局代理配置方法相似,配之后无需进行浏览器代理配 置即可全局访问内网题目地址
|
getshell危险指令绕过
1 2 3 4 5
| echo cGluZyB3d3cuYmFpZHUuY29t|base64 -d|bash 如果bash禁用了 可以用$0 如果$0是-bash 可以用 ${0:1} cGluZyB3d3cuYmFpZHUuY29t等于ping www.baidu.com
|
添加用户/组,密码操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| sudo adduser 用户名 #添加用户(有交互) sudo usermod -a -G sudo 用户名 #添加到sudo组,附带-a参数不改变用户基本组 sudo gpasswd -a 用户名 docker #参数-a附加到docker组,用户的基本组保持不变 sudo usermod -G 用户名 用户名 #只保留用户基本组 id 用户名 #查看用户组 useradd test114 添加用户(无交互) userdel test114 删除用户 passwd -d test114删除密码 echo test114:114514 | chpasswd echo -e "114514" |passwd test114 # 一句话添加用户密码 #普通账户 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest useradd -p "$(openssl passwd -1 123456)" guest #root账户,admin114514/Qaxnb@654!@# useradd -p `openssl passwd -1 -salt 'ysxb114' Qaxnb@654\!@#` -u 10086 -g root -G root -s /bin/bash -d /home/.admin admin114514
|
一句话找web目录
1 2 3
| find / -type f -name config.js|while read f;do sh -c "id;pwd;hostname;/sbin/ifconfig" >$(dirname $f)/test3.txt;done
echo ZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmpzfHdoaWxlIHJlYWQgZjtkbyBzaCAtYyAiaWQ7cHdkO2hvc3RuYW1lOy9zYmluL2lmY29uZmlnIiA+JChkaXJuYW1lICRmKS90ZXN0My50eHQ7ZG9uZQo= | base64 -d |sh
|
curl
如何在 Linux/Unix 上使用带有代理用户名/密码的 curl 命令
要将 curl
命令与需要用户名和密码的代理服务器一起使用,您可以使用 -x
选项指定代理服务器,并使用 -U
选项指定用户名和密码。
例如,要使用位于 proxy.example.com 的代理服务器以用户名 user 和密码 password 向 https://www.example.com 发送请求,您可以使用以下命令:
1
| curl -x proxy.example.com -U user:password https://www.example.com
|
这将使用位于 proxy.example.com 的代理服务器向 https://www.example.com 发送请求,并在请求中包含用户名和密码。
如果要在 http_proxy
环境变量中指定代理服务器和用户名/密码,可以使用 --proxy-user
选项指定用户名和密码。
例如:
1 2
| export http_proxy=proxy.example.com curl --proxy-user user:password https://www.example.com
|
这会将“http_proxy”环境变量设置为“proxy.example.com”,并在请求中包含用户名和密码。
请记住,-x
和 --proxy-user
选项与用于跟随重定向的 -L
选项不兼容。如果您需要遵循重定向,则可以改用“–location-trusted”选项。