破解密码,营救模式,初识脚本

来源:互联网 发布:男网络歌手好听的歌曲 编辑:程序博客网 时间:2024/05/16 05:13

Linux密码破解步骤

  1. 重新启动系统
  2. 开机倒数时间内,敲任意键
  3. 按字母e去编辑
  4. 选择kernel 开头的行,再次按字母e 编辑 ,然后敲空格,输入数字1,再敲回车。进入单用户模式,破解密码。此模式绕过密码验证
  5. 按字母键b 去引导进入系统
  6. 直接passwd 修改root用户的密码
  7. 修改密码后,输入init 5或者init 3 进入系统,或者reboot重新启动系统

vim /etc/inittab(必记!!)

  • 0 关机(不能把默认设置成这个);
  • 1 单用户模式 —》破解密码的时候(单用户模式还是要登录root)(绕过了shadow文件)(相当于windows中进PE模式);
  • 2 多用户模式。不能使用NFS功能(网络功能);
  • 3 完全多用户模式,可以使用网络功能。纯字符界面;
  • 4 unused 没有的;
  • 5 图形界面;
  • 6 重新启动(不能把默认设置成此项)。

所以,在终端输入:

  • init 0 :关机 (/poweroff/halt/shutdown -h now都是关机)
  • init 6 重新启动(/reboot/shutdown -r now)
  • init 3 进入字符界面
runlevel 查看当前运行级别 会看到:1  S  ---》1代表开机进入的运行级别  S 代表当前的运行级别 若是: S  3  ---》说明是从单用户切换到运行级别3

营救模式

eg:删除了/etc/passwd文件,进不去系统

如何进入营救模式?(rescue mode )

  1. 使用光盘进入
  2. 设置从光盘启动(快速按下ESC键,选择从光盘启动) 注意!按一次ESC即可,注意,不好按!太快了!

放入系统光盘;
选择rescue installed system 进入营救模式
(centos需要选择)rescue method –》local cd/dvd
这里写图片描述
(敲)

    chroot /mnt/sysimage  --》切换根环境到原来本身系统里的根    cp /etc/passwd-  /etc/passwd    exit    reboot

小结:

单用户模式—》破解密码–》看/etc/passwd,不看/etc/shadow
营救模式–》进入不了系统了


写脚本

作业1:
写一个脚本新建5个用户,用户名的前缀为zhang 例如:zhang1 zhang2 到zhang5,5个用户的密码为123456zhang,家目录在/zhang目录下与用户名同名。

   1.需求分析        1.使用什么命令来实现,什么功能算法            useradd 、passwd 、for    2.完善功能    3.开始给脚本起名字        create_user.sh    4.运行调试
方法一#!/bin/bash#function:create system user#author:cali#version:1.0mkdir /zhangfor i in `seq 5`do useradd -d /zhang/zhang$i zhang$iecho "123456zhang"|passwd zhang$i --stdindone
方法二(加强版)#!/bin/bashecho "please input system user name"read Name[ -d /zhang ]&&echo "now,beginning to create user"||mkdir /zhangfor i in {1..5}#for i in `seq 5`#for i in $(seq 5)do        if id $Name$i &>/dev/null        then                echo "sorry,user $Name$i is exist,please input name again"                exit        else                useradd -d /zhang/$Name$i $Name$i                echo "123456zhang"|passwd $Name$i --stdin &>/dev/null                echo "create $Name$i sucess!"        fidone

计时小脚本900秒。

echo 实验开始for i in `seq 900`   ---》``反引号:优先执行反引号里面的命令:do      echo 过去了$i秒      sleep 1   --》暂停一秒doneecho  timeover

awk是linux下的一个文本处理工具,主要用来截取想要的文本。

  • -F : 是指定分割符号;
  • $1 $2 是第几个
  • cmd1 && cmd2 作用:如果cmd1命令执行成功就执行cmd2命令
  • cmd1 || cmd2 作用:如果cmd1命令执行不成功就执行cmd2命令
  • cmd1 &&cmd2 ||cmd3 作用:如果cmd1执行成功就执行cmd2,如果cmd1执行不成功就执行cmd3命令
  • (mkdir aa mkdir bb mkdir ccc) 小括号的作用就是看做一个整体,只要括号内最后一条命令执行成功,则echo $? 就等于0.

if 命令

编写2个脚本
实现批量新建用户,可以自定义输入用户的名字、新建用户的数量、用户的密码。输入密码的时候不能显示出来。

if [ 条件];then        command1        command2        ......else        command1        command2        ......fi

[条件] 其实就是执行命令。当条件成立(命令执行成功),就执行第1个command1及后续命令;如果不成立,就执行else后面的command1及后续命令;
$? 是上一条命令的返回值,其中 0 代表命令执行成功,非零值代表不成功;
;分号是 命令连接符,不管前面的命令执行成功与否都会执行后面的命令!!!

执行脚本的方法

  • bash abc.sh
  • ./abc.sh
  • . abc.sh
  chmod +x adduser.sh  授予可执行权限# bash -x useradd_feng.sh  调试脚本。可以看到每条命令的执行过程

练习:

1.编写脚本实现如下新建用户的功能:  1.接受用户输入的用户名,例如liu  ,将liu作为用户名的前缀  2.接受用户输入的需要创建的用户数量,例如:20  ,意思就是要新建20个用户  3.接受用户输入的想要给所有用户设置的密码,例如:123456a
#!/bin/bashread -p "please input username:" nameread -p "please input the number:" numread -sp "please input the passwd:" passwdfor i in `seq $num`do      useradd $name$iif [ $? = 0 ]then      echo "useradd $name$i is OK"else      echo "useradd $name$i failed"      continuefi      echo $num |passwd $name --stdin &>/dev/null      echo "passwd $name$i is ok!"done

2.如果root的密码忘记了,如何破解?—–》虚拟机里完成,密码破解。

密码破解步骤1.重新启动系统2.开机倒数时间内,敲任意键3.按字母e去编辑4.选择kernel 开头的行,再次按字母e 编辑,然后敲空格 输入数字1,再敲回车。进入单用户模式,破解密码。此模式绕过密码验证5.按字母键b 去引导进入系统6.直接passwd 修改root用户的密码7.输入init 5或者init 3 进入系统,或者reboot重新启动系统

3.编写删除用户的脚本。

  1.接受用户输入的用户名,例如liu  ,将liu作为用户名的前缀    2.接受用户输入的需要删除的用户数量,例如:20    3.要求有显示所有系统里用户的功能,删除前先显示下系统里所有的用户,然后接受用户输入的用户名,开始去删除。  4.如果用户不存在给予提醒,不能删除不存在的用户
#!/bin/bash#function:To delete the user#author:liupeng#version:1.0read -p "please input delete  username:" nameread -p "please input the number:" numfor i in `seq $num`do        userdel -r $name$iif [ $? = 0 ]then        echo "userdel $name$i is OK"else        echo "userdel $name$i failed"        continuefidone

4.请编写一个脚本实现如下功能:

在屏幕上显示uid 大于500的用户的名字和uid号及家目录的位置,例如下面的格式输出 xiaoliu   uid is 500   home directory is /home/xiaoliu xiaohei   uid is 600   home directory is /home/xiaohei wuji   uid is 900   home directory is /home/wuji  ......

方法一:

#cat /etc/passwd| sort -n -k 3 -t:|cut -d : -f1,3,6|awk -F ':'  '{if($2>=500)print "$1 "   uid is  "$2 "   the home dir is "$3"}'#cat /etc/passwd| sort -n -k 3 -t:|cut -d : -f1,3,6|awk -F ':'  '$2>=500&&$2<=1000{print "$1 "   uid is  "$2 "   the home dir is "$3"}'

方法二:

[root@teacher lianxi]# cat hecheng_gt500.sh#!/bin/bash                                                                    #function:Statistics  user uid great than 500#author:naige#version:1.0cat passwd |cut -d ":" -f 1,3,4,6 |sort -n -t: -k2 >tongji.txtcp -f /etc/passwd ./#usernameusername=($(cat tongji.txt |cut -d: -f1))#uidhome=($(cat tongji.txt |cut -d: -f4))uid=($(cat tongji.txt |cut -d: -f2))#gid#gid=($(cat tongji.txt |cut -d: -f3))#homeecho "${username[$i-1]}  uid is ${uid[$i-1]}  home directory is ${home[$i-1]}"for i in `seq ${#username[@]}`do     if ((  ${uid[$i-1]} > 500 ))     then     fidone        
原创粉丝点击