Bash1

Bash

  • 反斜杠/

    ls

  • ls -1 将每个文件显示在一行 自动化!

  • ls -la 使用长列表格式并包含所有文件,包括隐藏文件

ls

  • ls -1 将每个文件显示在一行 自动化!
  • ls -la 使用长列表格式并包含所有文件,包括隐藏文件

文本输出命令

  • cat more less head tail 将文本输出到终端

  • cat -n 将显示文件的内容并显示文件的行数

  • more 简单查看文本文件,如果文件很大,一次显示一屏幕

  • less 显示内容允许前后翻页,+F可以监视文件变化

  • head 打印文件的前几行 head -n 3 file.txt 应用场景举例查看配置文件

  • tail 尾端几行 tail -n 3 file.txt 日志在底部写入最新时间

linux 文件系统

/bin/ 基本程序

/boot/ linux内核以及早期启动过程中所需的其他文件

/dev/ 设备文件 /etc/ 配置文件

/home/用户个人文件

/media/可移动设备挂载点

/root/ 管理员的个人文件

在这里插入图片描述

传统上,应用程序配置文件直接储存在用户主目录之下,文件名以点开头,因此会被隐藏,

某些程序狐疑将多个配置文件组织在一个目录中(例如~/.ssh/)

在这里插入图片描述

Zsh shell

echo $SHELL 可以知道我们在哪个shell环境下 操作

注意,此时的SHELL为变量概念,同时有其他的变量操作

learn=15

echo $learn(这里会输出15)

注意,我们的变量仅仅存储在当前shell环境,关闭终端后,15就被丢弃

注意SHELL是环境变量,全局公认。不一定反映当前正在运行的 shell 环境。相反,SHELL只是用户首选 shell 的名称,通常在/etc/passwd文件 中标识。

set

set命令可以列出其他环境变量

HISTFILE

Zsh将历史命令记录储存在HISTFILE变量中

kali@kali:~$ <cu>echo $HISTFILE</cu>
/home/kali/.zsh_history

但是要注意

虽然每个用户都有自己的.zsh_history,但是当查看别的用户历史记录

在这里插入图片描述

权限问题

history

同样效果

kali@kali:~$ <cu>history</cu>
example_command1
example_command2
example_command3
...

kali@kali:~$ <cu>cat ~/.zsh_history</cu>
example_command1
example_command2
example_command3
...

起别名

顾名思义,优化流程

kali@kali:~$ <cu>alias ll='ls -la'</cu>

kali@kali:~$ <cu>ll</cu>
total 40
drwxrwxrwt  10 root   wheel   320 Apr 24 13:19 .
drwxr-xr-x   6 root   wheel   192 Mar 18 20:10 ..
-rw-r--r--@  1 kali   wheel     0 Apr 21 19:56 MozillaUpdateLock-2656FF1E876E9973
-rw-r--r--   1 kali   wheel    10 Apr 21 15:18 a
...

不过这里的别名设置是临时别名,如果想要永久的话修改**~/.zshrc文件包含alias ll=‘ls -la’**完成之后,运行source ~/.zshrc来重置shell环境并适应新的别名,然后就可以直接运行ll了

渗透中,获得目标的访问权限之后,就要系统枚举(收集有关系统的信息,通常是为了提取)

可以使用/etc/issue获取版本

kali@kali:~$ <cu>cat /etc/issue</cu>
Kali GNU/Linux Rolling \n \l

uname打印内核名称

kali@kali:~$ <cu>uname</cu>
Linux

uname -v 打印内核版本

kali@kali:~$ <cu>uname -v</cu>
#1 SMP Debian 5.9.1-1kali2 (2020-10-29)

uname -a打印uname可以访问的内核相关信息

kali@kali:~$ <cu>uname -a</cu>
Linux academy 5.9.0-kali1-amd64 #1 SMP Debian 5.9.1-1kali2 (2020-10-29) x86_64 GNU/Linux

linux 文件管理

touch

touch创建新空文件,如果文件已经存在,那么只修改文件的访问时间戳

kali@kali:~$ <cu>touch newfile</cu>

kali@kali:~$ <cu>ls -l</cu>
total 0
-rw-r--r-- 1 kali kali 0 Jun 11 09:27 <cg>newfile</cg>

rm

删除文件 rm filename

注意没有回收站和垃圾桶,删除情报是真的

mkdir

创建目录

kali@kali:~$ <cu>mkdir newdir</cu>

kali@kali:~$ <cu>ls -l</cu>
total 4
drwxr-xr-x 2 kali kali 4096 Jun 11 09:31 newdir
-rw-r--r-- 1 kali kali    0 Jun 11 09:27 newfile

rmdir

删除空目录

mv

移动或者重命名文件 mv a b 移动a文件到b目录或者把a重命名为b

cp

复制

kali@kali:~$ <cu>cat hi.txt</cu>
hello

kali@kali:~$ <cu>cp hi.txt bye.txt</cu>

kali@kali:~$ <cu>cat bye.txt</cu>
hello

kali@kali:~$ <cu>ls</cu>
bye.txt  hi.txt

symbolic link ||symlik

软链接

kali@kali:~$ <cu>touch original.txt</cu>

kali@kali:~$ <cu>echo 'hello world' > original.txt</cu>

kali@kali:~$ <cu>cat original.txt</cu>
hello world

kali@kali:~$ <cu>cd /tmp</cu>

kali@kali:/tmp$ <cu>ln -s ~/original.txt symlink.txt</cu>

kali@kali:/tmp$ <cu>ls -la</cu>
lrwxrwxrwx  1 kali  kali    21 Jun  3 17:43 symlink.txt -> /home/kali/original.txt

kali@kali:/tmp$ <cu>cat symlink.txt</cu>
hello world

kali@kali:/tmp$ <cu>echo 'goodbye planet' > ~/original.txt</cu>

kali@kali:/tmp$ <cu>cat symlink.txt</cu>
goodbye planet

硬链接

简单来说就是复制为一个副本

ln ~/a b

b就和a一样了,而且删除a不会影响到b

通配符

*

kali@kali:~$ <cu>ls -l a*</cu>
-rw-r--r--  1 root  wheel    515 Jun  6  2020 afpovertcp.cfg
lrwxr-xr-x  1 root  wheel     15 Mar  9 20:49 aliases -> postfix/aliases
-rw-r-----  1 root  wheel  16384 Jun  6  2020 aliases.db
-rw-r--r--  1 root  wheel   1051 Jun  6  2020 asl.conf
-rw-r--r--  1 root  wheel    149 Oct 30 08:55 auto_home
-rw-r--r--  1 root  wheel    195 Oct 30 08:55 auto_master
-rw-r--r--  1 root  wheel   1935 Oct 30 08:55 autofs.conf
...

查找文件

which

which 在&PATH环境变量中搜索给定的文件名

找到之后,返回文件的完整目录

kali@kali:~$ <cu>echo $PATH</cu>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

kali@kali:~$ <cu>which sbd</cu>
<cr>/usr/bin/sbd</cr>

locate

最快的方法,搜索域为local.db内置数据库,而不是硬盘本身,会通过自动任务定期自动更新

find

递归遍历文件层次结构

在这里插入图片描述

管道和重定向

在基于linux的系统中,每个命令行上运行的每个程序都会自动有三个数据流连接,每个数据流还分配有一个文件描述符整型值

STDIN(0) STDOUT(0) STDERR(2)错误信息

>将STDOUT重定向到后者,本质是1> 覆盖数据

kali@kali:~$ <cu>ls -lah > listing.txt</cu>

kali@kali:~$ <cu>cat listing.txt</cu>
total 1056
drwxr-xr-x  85 root  wheel   2.7K Apr 19 17:41 .
drwxr-xr-x   6 root  wheel   192B Mar 18 20:10 ..
-rw-r--r--   1 root  wheel   515B Jun  6  2020 afpovertcp.cfg
lrwxr-xr-x   1 root  wheel    15B Mar  9 20:49 aliases -> postfix/aliases
-rw-r-----   1 root  wheel    16K Jun  6  2020 aliases.db
...

>>附加形式重定向

(wc -m可以计数)

2>可以将错误信息重定向到文件

|将一个命令的输出作为输入传递给另一个命令。

kali@kali:~$ <cu>ls | sort</cu>
afpovertcp.cfg
aliases
aliases.db
apache2
asl
asl.conf
...
                                                                                                      

搜索与文本操作

grep

在文本中搜索给定的正则表达式-r在目录中进行递归搜索-i忽略文本大小写

kali@kali:~$ <cu>ls -la /usr/bin | grep zip</cu>
-rwxr-xr-x  3 root root   34480 Jan 29  2017 bunzip2
-rwxr-xr-x  3 root root   34480 Jan 29  2017 bzip2
-rwxr-xr-x  1 root root   13864 Jan 29  2017 bzip2recover
-rwxr-xr-x  2 root root    2301 Mar 14  2016 gunzip
-rwxr-xr-x  1 root root  105172 Mar 14  2016 gzip

sed

几乎为流编辑器

替换

kali@kali:~$ <cu>echo "I need to try hard" | sed 's/hard/harder/'</cu>
I need to try harder

cut

截取一段

-f(表示 我们要剪切的字段编号)和**-d**(表示字段分隔符)。

kali@kali:~$ <cu>echo "I hack binaries,web apps,mobile apps and just about anything else" | cut -f 2 -d ","</cu>
web apps

也可以提取一段

kali@kali:~$ <cu>cut -d ":" -f 1 /etc/passwd</cu>
root
daemon
bin
sys
sync
games
...

awk

kali@kali:~$ <cu>echo "hello::there::friend" | awk -F "::" '{print $1, $3}'</cu>
hello friend

和cut最明显的区别就是可以使用它多个字符作为分隔符

一般来说,更为灵活,最常用的是-F(字段分隔符)和print子命令(输出结果文本)

当涉及多个字符串操作的命令的时候,就考虑awk

比较文件

comm

comm比较两个文件,

第一列为第一个文件所特有,第二列为第二个文件所特有,第三列为共有

使用-n可以隐藏一列或多列(n=123)

kali@kali:~$ <cu>cat scan-a.txt</cu>
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

kali@kali:~$ <cu>cat scan-b.txt</cu>
192.168.1.1
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6

kali@kali:~$ <cu>comm scan-a.txt scan-b.txt</cu>
								192.168.1.1
192.168.1.2
								192.168.1.3
								192.168.1.4
								192.168.1.5
			  192.168.1.6

kali@kali:~$ <cu>comm -12 scan-a.txt scan-b.txt</cu>
192.168.1.1
192.168.1.3
192.168.1.4
192.168.1.5

diff

检测文件之间的差异

-c上下文格式

-u统一格式

-表示只出现在第一个文件

+表示只出现在第二个文件

kali@kali:~$ <cu>diff -c scan-a.txt scan-b.txt</cu>
*** scan-a.txt	2018-02-07 14:46:21.557861848 -0700
--- scan-b.txt	2018-02-07 14:46:44.275002421 -0700
***************
*** 1,5 ****
  192.168.1.1
- 192.168.1.2
  192.168.1.3
  192.168.1.4
  192.168.1.5
--- 1,5 ----
  192.168.1.1
  192.168.1.3
  192.168.1.4
  192.168.1.5
+ 192.168.1.6

kali@kali:~$ <cu>diff -u scan-a.txt scan-b.txt</cu>
--- scan-a.txt	2018-02-07 14:46:21.557861848 -0700
+++ scan-b.txt	2018-02-07 14:46:44.275002421 -0700
@@ -1,5 +1,5 @@
 192.168.1.1
-192.168.1.2
 192.168.1.3
 192.168.1.4
 192.168.1.5
+192.168.1.6

终端编辑器

nano

C+o保存文件

C+x退出文件

C+w输入搜索词Enter搜索,C+w移动到下一个匹配项

用户和组

/etc/passwd或者/etc/shadow

passwd是全局可读

shadow

root<cr>:</cr>$6$pfiZTzNB1wav3OFG$GDwbvI44D7sBuX7Q.6LmNWx.RaU6nzxZWCCkkMNIXCkvANnNoYogV983NSLkG1cfpaW4mmyFuTOKkDf53hVkh/<cr>:</cr>18781<cr>:</cr>0<cr>:</cr>99999<cr>:</cr>7<cr>:::</cr>

根条目是纯文本形式用户名

下一部分是加密密码

下一部分18718是密码最后一次更改的时间,采用时间戳的形式

99999表示密码有效的最大天数

最后一个7表示密码到期前多少天会提醒用户更改密码

passwd

john<cr>:</cr>x<cr>:</cr>1002<cr>:</cr>1002<cr>:</cr>John Doe,,,<cr>:</cr>/home/john<cr>:</cr>/bin/bash

john是纯文本形式的用户名

x表示需要从shadow中提取密码

第一个1002表示用户ID,这是系统上每一个账户的唯一编号(UID)

第二个1002是用户所属的主要组ID(GID)

其他组成员身份在/etc/group文件中定义

John···位于可选字段,称为注释字符,通常包含用户的全名,用于提供信息

/home/john是用户的主目录位置

/bin/bash是用户的默认环境

aW4mmyFuTOKkDf53hVkh/:18781:0:99999:7:::


根条目是纯文本形式用户名

下一部分是加密密码

下一部分18718是密码最后一次更改的时间,采用时间戳的形式

99999表示密码有效的最大天数

最后一个7表示密码到期前多少天会提醒用户更改密码

# passwd

john:x:1002:1002:John Doe,:/home/john:/bin/bash


john是纯文本形式的用户名

x表示需要从shadow中提取密码

第一个1002表示用户ID,这是系统上每一个账户的唯一编号(UID)

第二个1002是用户所属的主要组ID(GID)

其他组成员身份在/etc/group文件中定义

John···位于可选字段,称为注释字符,通常包含用户的全名,用于提供信息

/home/john是用户的主目录位置

/bin/bash是用户的默认环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值