文档大致情况:总结比赛和日常了解到的一些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”选项。