栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kali学习之从入门到入狱(三)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kali学习之从入门到入狱(三)

Kali学习之从入门到入狱
  • 冒个泡
  • 开篇
  • 1 Linux 常见目录
  • 2 Linux基础命令
    • 2.0 环境变量
    • 2.1 apt-get 安装
    • 2.2 ls ll 和 alias
    • 2.3 花式grep
    • 2.4 git 命令
    • 2.5 sed(stream editor流式编辑器) 命令
    • 2.6 awk命令详解
  • 2.7 命令
  • 3 shell基础
  • 4 脚本应用
    • 4.0 crontab定时任务
    • 4.1 监测进程并重启脚本
    • 4.2 获取本机IP发送邮件
    • expect脚本自动连接服务器
  • 5 docker
    • 5.1基础
    • 5.2 dockerfile(构建docker镜像的文件)
    • 5.3 docker网络
  • 全文最重要的话

冒个泡

发点存货证明自己没有进去!!!
我以为只要小说会被催更,原来博客也会被催,谢谢大家的厚爱,日后会逐渐更新《Kali学习之从入门到入狱(一)》中的常用工具。

说一下一直不更新的原因:博主主要是做算法的,最近事情也比较多,玩渗透只是兴趣爱好,还有交了女朋友影响了我打字速度。。。奥,编不动了,其实主要是懒。

开篇

相信看到这里的同学都已经玩过kali机了,kali是自带图形界面的,我们可以像Windows一样通过点击的方式去操作他。即使不会Linux一样可以点点点。但是如果想使用kali的渗透工具,全部都是命令行,完全无从下手。这一期把我学习Linux,shell、except的笔记,分享一下。

1 Linux 常见目录
/etc/shells   				# 记录了当前Linux系统中所支持的shell版本
/etc/security/limits.conf	# 对系统的内存,cpu,最大打开文件数等资源进行限制。 
/etc/hosts
/etc/profile 				# 系统级环境变量和开始程序 
							# 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行
							# 并从/etc/profile.d目录的配置文件中搜集shell的设置.  
/etc/cron.d/ 				# 定时任务目录 
/etc/sysconfig/network 		# 网络
/etc/rc.d/init.d 			# 启动的配置文件和脚本 
/etc/rc.d 					# 启动的配置文件和脚本 
/etc/passwd 				# 用户信息文件 
/etc/group 					# 组信息文件 
/etc/bashrc 				# 系统级	为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.  


/var/log 					# linux默认应用的日志路径 
/var/log/cron 				# 定时任务日志 
/var/log/httpd/ 			# Apache相关日志 mod_jk, access, error 
/var/log/rpmpkgs 			# rpm packags 
/var/spool 					# 放置“假脱机(spool)”程序的目录,如mail、news、打印队列和其他队列工作的目录。每个不同的spool								# 在/var/spool下有自己的子目录,例如,用户的邮箱就存放在/var/spool/mail 中。 


/proc/version 				# 查看linux版本信息
/proc/cpuinfo 				# cpu 信息  命令:lscpu
/proc/meminfo 				# 内存 信息
/proc/interrupts 			# 查看中断
/proc/loadavg 				# 查看系统负载


/dev/null     				# 丢弃的文件 , 一般 2>dev/null ,将错误信息放入文件
strings /dev/urandom 		# 生成随机字符串的设备文件


/var 包含 系统一般运行时要改变的数据。 通常这些数据所在的目录的大小是要经常变化或扩充的。原来/ v a r目录中有些内容是在/ u s r中的,但为了保持/ u s r目录的相对稳定,就把那些需要经常改变的目录放到/ v a r中了。每个系统是特定的,即不通过网络与其他计算机共享。 
/bin 						# 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。 
/sbin 						# 该目录用来存放系统管理员的系统管理程序。 
/etc 						# 该目录存放了系统管理时要用到的各种配置文件和子目录,
							# 例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。 
/home 						# 用来存放该用户独立数据的主目录。 
/lib 						# 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库 
/lost+found 				# 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。 
/mnt 						# 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。 
/proc 						# 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的 
/root 						# 如果你是以超级用户的身份登录的,这个就是超级用户的主目录 
/tmp 						# 用来存放不同程序执行时产生的临时文件 
/boot 						# 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息 
/dev 						# 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,
							# 你可以访问这些外部设备,与访问一个文件或一个目录没有区别。
							# 键入"cd /dev/cdrom",就可以看到光驱中的文件;键入"cd /dev/mouse"即可看鼠标的相关文件。 
2 Linux基础命令 2.0 环境变量
# 连接到当前终端 是 /bin/bash  命令行 (pstree)
输入pstree 可以看到sshd这是因为我用item2通过ssh连接的服务器。出现两个sshd的原因我猜测是做过内网穿透的原因。
bash 就是我们当前连接的命令行,pstree说明我们在当前命令行执行了pstree命令
─sshd───sshd───bash───pstree
当我们输入在命令行输入bash,发现执行成功但是看不出变化,继续输入pstree命令
bash 发现多了一个bash说明我们现在执行的命令已经是新的bash
─sshd───sshd───bash───bash───pstree
# 两个bash会造成的影响,发现第二 echo $a 为空,说明变量a只是局部变量
a=10
echo $a
bash
echo $a
# 我们设置全局变量后全部bash都可以访问
# 方法一(当前终端有效,窗口关闭后无效):
export a=10
# 方法二(vi ~/.bashrc 或 ~/.bash_profile 用户环境变量,只对当前用户有效,且永久生效):
# 	   (vi /etc/bashrc 或 vi /etc/profile 系统环境变量,对所有用户有效,且永久生效)
进入文件写入 a=10
source ~/.bashrc

现在有了全局变量和局部变量的知识,那么问题来了,通过全局变量的设置,我们的Linux命令可以在任意bash下执行的,但是Linux为什么可以在任意目录下执行?这就要说到PATH变量。
PATH环境变量通俗的讲就是把程序的路径"备案"到系统中,这样执行这些程序时就不需要输入完整路径,直接在bash输入程序名就可以执行.

# 我们看一下系统默认设置的PATH路径
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 我们通过寻找 /bin 目录发现ls 命令在这个命令下
ll /bin/ | grep ls

所以,我们完全可以把下载好的应用拷贝到 /bin,/usr/bin 等任意目录,
我们下载的应用也可以像Linux自带的命令一样在任意位置执行。
# 或者直接将路径添加在PATH变量上:
export PATH=/home/user/mysql/bin:$PATH
# 或者把PATH放在前面
export PATH=$PATH:/home/user/mysql/bin

sh 和 source 区别

sh 执行脚本 : 新创建一个bash 在新建bash下执行 脚本
source 执行脚本 : 在当前 bash 执行脚本
2.1 apt-get 安装
apt-get 命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载包,也可以用来升级包,还可以用来把系统升级到新的版本。
相比较Windows,需要打开应用商店,搜索软件,然后才能下载,安装。
Ubuntu只需要知道要下载的软件名一条命令就可以完成。
# 下载包目录:/var/cache/apt/archives
# 安装应用目录:/usr/share或/usr/local
apt-get install 软件名
# 删除已安装的软件包(保留配置文件),不会删除依赖软件包,保留配置文件;
apt-get remove 软件名
# 删除已经安装过的的软件安装包;即自动将/var/cache/apt/archives/下的所有deb删掉
apt-get clean
# 搜索:系统会列出与名称相匹配的包
apt-cache search 
# 更新
apt-get update 是更新软件列表,
apt-get upgrade 是更新软件。
2.2 ls ll 和 alias
ls 大家都知道是打印出当前目录的列表
ls -l 可以看到详细信息
ll 与 ls -l 的效果一样的
但是并不是有ll这个命令而是在环境变量中设置了别名
vi ~/.bashrc
在文末添加:
alias ll='ls -l --color=auto'
alias name=value 			# =两边不能有空格,可以自定义一些命令
source ~/.bashrc
2.3 花式grep
# 找到id_all.txt中所有不在id_1k.txt中的字符串           取反 字符串匹配 全部匹配 指定规则文件 
grep -v -F -w -f id_1k.txt id_all.txt
-i 或 --ignore-case : 忽略字符大小写的差别。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-w 或 --word-regexp : 只显示全字符合的列。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-q 或 --quiet或--silent : 不显示任何信息。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
# grep 多种规则 ^$ 去除空行
grep -E'(John|Jerry|^$)' roster.txt

# 通过pgrep来获得正在被调度的进程的相关信息
pgrep -l 程序名
-l:同时显示进程名和PID

# fgrep 因为它搜索字符串而不是搜索匹配表达式的模式。 命令使用快速的压缩算法。
fgrep 使用相当于 grep -F 的效果

# egrep
egrep命令检索扩展的正则表达式
2.4 git 命令
# 用户标识(必须配置)
git config user.name "username"
git config user.email "email"
git config --global user.name "zhangyiqian"  #名称
git config --global user.email 496115313@qq.com  #邮箱
# 局部配置
git config user.name "username"
git config user.email "email"
# 显示中文
git config --global core.quotepath false
# 初始化
git init
# git操作
git status  							# 查看文件状态
git add .  								# 所有文件提交到暂存区
git commit -m "new file"  # 提交信息
git push   								# push 到远程仓库
# 忽略文件 .gitignore
*.txt    				# 忽略.txt结尾文件
!lib.txt				#lib.txt	除外
/temp						# 忽略 /temp下所有文件
# 远程
ssh-keygen      # 生成公钥,免密登录
id_rsa.pub      # 公钥添加到gitee


# 版本恢复
1、查看版本
git log
# 方法1 git reset --hard 目标版本号
git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
# 方法2 git revert -n  目标版本号
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。
比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。



# 多人操作 分支
git branch 										# 列出本地分支
git branch -r									# 列出远程分支
git branch [branch-name]			# 新建分支
git checkout -b [branch]			# 新建并切换分支
git merge [branch]						# 合并指定分支到当前分支
git checkout -d [branch]			# 删除分支
git push origin --delete [branch-name] # 删除远程分支
git branch -dr [branch]				# 删除远程分支
# 远程分支使用
git checkout -b new_branch 		# 本地新建分支
git push <远程> <分支> 				 # 提交到远程
2.5 sed(stream editor流式编辑器) 命令
# 语法
sed [-hnV][-e