Linux实验
实验1-7实验报告
实验一
实验目的
1.熟悉VirtualBox等虚拟机用法,并配置Ubuntu Linux实验环境。
2.了解和使用Linux常用shell工具,并掌握通用的帮助或手册用法。
3.能够使用基础命令查看主机名、网络配置。
4.能够查看CPU、内存配置与使用状态以及系统内核版本与发行版本。
5.能够完成与宿主机的网络配置,理解不同网络配置类型的区别。
6.能够对常用软件镜像源进行修改。
7.能够在Linux环境中配置SSH服务。
8.熟练使用命令行或GUI工具通过SSH远程连接Linux。
实验过程
1.下载VirtualBox虚拟机并安装
2.下载Ubuntu系统镜像,并在虚拟机中安装
3.在Ubuntu系统中打开终端,使用常见的命令进行操作,尝试执行ls、ps命令观察输出结果。尝试"Tab”、“↑”、“↓"来进行补全和查看bash历史记录。
(1)打开终端
(2)执行ls、ps命令观察输出结果,尝试"Tab”、“↑”、“↓"来进行补全和查看bash历史记录。
4.使用man命令查看ls手册,执行ls --help查看帮助,观察两种不同的帮助文档的区别。进阶操作:查看任意一个命令的说明文档,并简述其功能.
(1)使用man命令查看ls手册。
(2)执行ls --help
查看帮助
这两种命令的区别:
1)help命令用于显示shell内部的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。
2)man命令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
3)一般看信息都用查看man文档,而help只是一个简单的描述,方便,但man文档中都包含了。help 是内部命令的帮助,比如cd ,man 是外部命令的帮助,比如ls。
(3)进阶操作:查看man命令的说明文档,并简述其功能
man命令的功能是用于查看命令、配置文件及服务的帮助信息。
5.使用date、hostname、top、uname命令来查看系统时间、主机名、实时系统占用情况和内核版本。
6.通过cat命令查看当前系统中CPU信息(/proc/ cpuinfo)、内存信息(/proc/meminfo)验证是否与虚拟机配置相同。
观察数据和之前虚拟机配置的时候数据,与20GB配置相同。
7.在虚拟机中对所安装的系统进行网络配置,分别使用NAT网络、桥接网卡以及Host-Only来进行配置,使用ip命令来查看系统当前网络配置,比较不同配置的区别。在宿主机中使用ping命令来测试与虚拟机的连通性。最后使用一种合适的网络配置使虚拟机中系统可以连接互联网。
由于尝试ubuntu系统的网络配置失败(ping不成功),我又进行了VM下kali系统的网络配置
(1)NAT网络配置
主机ip地址为:192.168.251.1
在NAT模式下可以直接进行联网
(2)Host-Only网络配置
虚拟机设置为仅主机模式
然后打开虚拟机后,配置kali IP地址:192.168.254.10
子网掩码:255.255.255.0
,在主机进行ping测试:
(3)桥接网卡网络配置
配置虚拟机,让它的IP地址192.168.254.200
,子网掩码255.255.255.0
和和主机处于同一个网段。
然后在主机进行ping命令测试:
8.进行apt软件源的更换,使用apt update命令进行更新。
执行命令sudo vim /etc/apt/sources.list
并输入以下源:
然后执行命令sudo apt-get update
进行更新
9.使用apt安装openssl服务端,进行ssh服务端配置.
执行sudo apt-get install ssh
安装ssh服务
执行sudu apt-get install openssh-service
安装openssh服务端
然后执行sudo service ssh restart
重启ssh服务
10.在宿主机中使用支持ssh连接的程序(ssh、mobaxterm、windterm等)对Ubuntu进行远程连接。
在系统上下载并且安装mobaxterm
然后输入ip地址,用户名和端口号以及密码进行远程连接
实验二
实验目的
1.学习使用常用命令: ls,cd,cat,find,file
2.理解基本的用户与文件权限
实验过程
1.通过SSH远程连接给定目标
2.在登录账户的主目录中,查看文件名为"readme"的内容
先用ls命令
发现文件名为"readme"刚好在主目录中,则可以直接执行命令cat readme
进行查看文件内容为ieEWq6ht
3.lesson01-1用户密码为上一步骤中的文件内容,使用lesson01-1登陆,查看文件名为"-”的内容
先用ls命令
发现文件名为"readme"刚好在主目录中,当我执行命令cat -
时发现跟第二题的结果不同,通过搜索可知-
是特殊字符,可以采取修改文件名的方式进行查看文件内容。
通过搜索Linux命令,发现mv
命令可以修改文件名,则执行mv - wenjian
,在执行cat wenjian
获取文件内容为gy5f6rs7
。
4.lesson01-2用户密码为上一步骤中的文件内容,使用lesson01-2登陆,查看文件名为"spaces in thisfilename"的内容
先使用ls命令
发现文件名为"spaces in thisfilename"的文件刚好在主目录下,则直接执行cat 'spaces in thisfilename'
既可以查看文件内容为:iJpMOHR5
5.lesson01-3用户密码为上一步骤中的文件内容,使用lesson01-3登陆,查看主目录下隐藏文件内容
通过ls --help
发现ls -a
可以查看隐藏文件,先用ls -a
,然后在执行命令cat .hidden
查看文件内容为:S5O0FGZb
6.lesson01-4用户密码为上一步骤中的文件内容,使用lesson01-4登陆,查看主目录下ASCII格式的文本文件内容
先使用ls命令
发现有几个文件
通过菜鸟教程
里面的常用命令学习,发现-exec file
命令可以显示出文件类型,则执行命令find -exec file {} \;
发现文件7是ASCII格式的,则执行cat 'File (7)'
,获取内容为s3XECIPV
7.lesson01-5用户密码为上一步骤中的文件内容,使用lesson01-5登陆,查找maybehere目录,查看该文件夹满足以下条件文件的内容:“文件大小为1008字节,文本文件,不可执行"
先使用ls
发现有一个文件夹,在使用cd maybehere
转入这个文件夹目录中,在使用ls
命令,又发现许多文件夹。
使用命令find . -size 1008c
可以筛选出在maybehere目录下文件大小是1008字节的文件。
发现竟然只有一个文件,现在去验证这个文件是不是文本文件并且不可执行,使用命令find . -exec file {} \;
,发现有两个文本文件而且都不可执行。
然后使用cd /maybehere/maybehere (1)
,转入该文件所在目录,再使用命令ls -l
发现文件7是8字节不符合题意。
则使用命令cat 'File (14)'
获取文件内容
文件后八位是:gHm7YP4l
8.lesson01-6用户密码为上一步骤中的文件内容最后8字符,使用lesson01-6登陆,查找满足以下条件文件:“在/var路径下,属于用户lesson01-6、属于用户组lesson01-5、文件大小为50字节”,查看该文件内容
先使用ls
发现没有文件,再使用cd /var
命令转入/var
路径,
然后使用命令:find . -user lesson01-6 -group lesson01-5
发现有一个文件./lib/6
现在看一下它的大小是否是50字节,先cd /var/lib
转入文件所在目录,使用命令ls -l
发现文件6
确实是50字节,然后使用cat 6
获取其内容:WXVxFCI2ZyrKIlmyGuqDdfmafvNspT9jZ9d1wWqTUnx4jYq8w0
后八位为:x4jYq8w0
9.lesson01-7用户密码为上一步骤中的文件内容最后8字符,使用lesson01-7登陆,获取/etc/lesson01_pass内容。观察主目录中文件内容及权限,使用md5sum来观察主目录下的两个文件是否相同,说明为什么会造成差异。
直接使用命令cat /etc/lesson01_pass
发现无法获取其内容
然后使用ls
命令发现两个文件,再使用ls -l
命令获取文件权限,再分别使用命令md5sum newcat1
和md5sum newcat2
获取文件内容
发现newcat1 和 newcat2 的内容相同,但是拥有者和所属群组都属于lesson01-8而不是lesson01-7,newcat1文件所属者lesson01-8不可执行,newcat2文件权限可以看出是’rws‘,s权限的作用:表示对文件具用可执行权限的用户将使用文件拥有者的权限或文件拥有者所在组的权限在对文件进行执行。就说明newcat2可执行。
执行命令./newcat2 /etc/lesson01_pass
获取文件内容
实验三
实验目的
1.巩固使用常用命令: ls,cd,cat,find,file
2学习使用常用命令: grep,sort,uniq, strings,diff
实验过程
1.通过SSH远程连接到给定目标
2.查找文件data.txt中,单词“millionth”后到段落结尾的文本内容
通过命令grep --help
发现:
则使用命令grep -n millionth data.txt
可知:millionth在第12行,下一操作密码为:TESKZC0XvTetK0ObTUeMb5STk5iWrBvP
通过菜鸟教程
常用命令的查询,发现wc
命令可以知道文件有多少行
使用命令wc -l data.txt
可知:data.txt一共有98567行,则使用命令grep -A99000 millionth data.txt
,可以显示出单词millionth
后面99000行,可以到达文件尾部
3.lesson02-1用户密码为上一步骤中得到的内容,使用lesson02-1登陆,查找文件data.txt中,仅出现一次的文本行。
通过命令grep --help
发现:
则使用命令cat data.txt | sort | uniq -u
获取仅出现一次的文本行为:EN632PlfYiZbn3PhVK3XOGSlNInNE00t
4.lesson02-2用户密码为上一步骤中得到的内容,使用lesson02-2登陆,查找文件data.txt中, 查找以几个“=”开头的ASCII字符串。
通过命令strings --help
发现:strings
命令可以显示字符串
strings -a
可以显示所有字符串,grep ==
可以筛选内容含有多个"="的字符串
则使用命令cat data.txt | strings -a | grep ==
获取字符串
内容为:the
、password
、isT
G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
5.lesson02-3用户密码为上一步骤中结果的其中一个,使用lesson02-3登陆,查找文件passwords.old和passwords.new,比较password.old和password .new文件内容,获取已更改的行内容
对密码依次尝试,密码为:G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
先用ls查找文件
通过diff --help
可知:diff命令是以逐行的方式,比较文本文件的异同处。
则使用命令diff passwords.new passwords.old
,比较两个文件
可知更改的内容在第42行
实验四
实验目的
1.学习使用常用命令:crontab
⒉能够阅读理解简单的Shell脚本
实验过程
1.通过SSH远程连接给定目标
2.在/etc/cron. d查找定时任务cronjob_lesson03_1,思考该任务的执行周期是多长?分析该定时任务写入临时文件的内容
先cd /etc/cron.d
然后在进行其他操作
图片中圈出的内容显示:该任务是每分钟定时执行一次。
然后执行命令cat cronjob_lesson03_1
获取文件路径,在使用命令cat /usr/bin/lesson03_shell1.sh
获取内容:
定时文件的内容是:将/etc/lesson03_pass/lesson03_1
的内容复制到/tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
中
内容是:
3.在/etc/cron. d查找定时任务cronjob_lesson03_2,分析该定时任务写入临时文件的内容
先cd /etc/cron.d
,然后使用ls
刚好查看到两个文件,然后执行命令cat cronjob_lesson03_2
获取文件路径,在使用命令cat /usr/bin/lesson03_shell2.sh
获取内容:
定时内容2也是每分钟执行一次,内容为:
每分钟定时执行/usr/bin/lesson03_shell2.sh
一次
第一步:将命令whoami的输出结果赋值给myname
第二步:执行命令echo I am user $myname
然后将其输出结果使用命令md5sum
和cut
进行处理,然后将处理结果赋值给target
。
第三步:输出字符串Copying passwordfile /etc/lesson03_pass/$myname to /tmp/$mytarget
第四步:将/etc/lesson03_pass/$myname
文件的内容复制到 /tmp/$mytarget
实验五
实验目的
1.理解cron配置文件和shell脚本
⒉编写简单的shell脚本
实验过程
1.通过SSH远程连接给定目标
2.分析已经存在的定时任务
先使用ls
命令,发现没有任何文件,在使用ls -a
命令,发现也没有隐藏文件。然后使用命令cd /etc
转入/etc
目录下,在使用ls
命令,发现许多文件。
通过搜索发现,定时文件常放入/var/spool
或者/etc/cron.d
目录中;
首先,转入/var/spool
,在ls -l
发现三个文件夹
然后,转入/etc/cron.d
,在ls -l
发现定时文件
使用命令cd /etc/cron.d
进去所在目录,在使用ls
命令发现定时文件cronjob_lesson04_1
,在执行命令cat cronjob_lesson04_1
获取文件内容,在执行cat /usr/bin/lesson04_1.sh
打开脚本文件,脚本内容为:
分析该脚本任务:
进入/var/spool/lesson04-1
,然后使用for
循环遍历该目录下的所有文件和文件夹;如果当前循环到的是一个文件或文件夹,且不是"."
或".."
,则获取该文件或文件夹的所有者名字并且将该值赋值给owner;如果owner的名字是"lesson04-1"
,则先执行,30秒后终止并删除这个文件。
3.获取/etc/lesson04-2_pass内容
先使用命令cd /etc
转入该目录,然后使用命令ls
,查看到文件lesson04-2_pass
,然后使用命令cat lesson04-2_pass
发现获取不了文件内容,使用命令ls -l
看一下该文件的权限,发现这个问的所有者和所属用户组都是lesson04-root
,只有它可以执行,而且其他用户没有权限读写执行。
则可以按照第2题的方法来做,在/var/spool/lesson04-1
下一个脚本,将/etc/lesson04-2_pass
的内容输出到一个可读执行的文件p2中,脚本内容:
如图所示,按照序号执行命令,得到答案:k6t69HILKC
实验六
实验目的
1.编写简单的shell脚本
2.理解linux中管道的使用
实验内容
1.通过SSH远程连接给定目标,密码为实验5所得结果
2.主目录有一个程序,他需要一个正确的口令来告诉你下一关的密码。提示:口令格式为lesson04-2xxxx,其中xxxx为纯数字
先ls
发现一个程序,运行程序得到提示只有五次尝试的机会,4个位置每个位置都有0到9,10种可能的选择,一共有10000种组合。采取手动遍历的方法是行不通的,于是我们编写脚本p.sh
进行遍历暴力破解:
使用命令./p.sh
,需要等一小会,然后发现主目录下会出现aw.txt
文件夹
打开这个文件,里面正是遍历的结果。
然后进行暴力破解:执行命令cat ./aw.txt | ./crackme
,寻找密码
密码为:JlyZprXui1
发现很多nop,又想到前面命令uniq -u
可以进行筛选,则执行命令cat ./aw.txt | ./crackme | uniq -u
密码直接出现在最后一行,密码为:JlyZprXui1
实验七
实验目的
1.编写简单的shell脚本
实验内容
1.通过SSH远程连接给定目标,密码为实验6所得结果
2主目录下有一个ssh登录日志文件,帮忙分析文件,将登录失败超过20次(不含20)的IP加入到主目录的ban_waitlist中,已有IP不重复加入
我们需要编写的脚本p.sh来帮助我们分析该日志文件,脚本内容为:
该脚本解释:
1.使用grep
命令在$logfile
日志文件中搜索所有包含“Failed password”
的行,awk '{print $(NF-3)}'
选取每行中倒数第四个字段,也就是IP地址,并将其提取出来。
2.使用sort和uniq -c
命令对提取出来的IP地址进行去重和计数。
3.使用awk '$1 > 20 {print $2}'
命令选取计数大于20的IP地址,并将这些IP地址保存到$ip_list
变量中。
4.使用for循环依次遍历$ip_list
中的IP地址。
5.对于每个IP地址,使用grep -q “^$ip$” $ban_waitlist
命令在$ban_waitlist
中查找是否已经存在该IP地址。
6.如果ban_waitlist
中不存在该IP地址,就将该IP地址添加到ban_waitlist
文件中。
ban_waitlist
原来一共有9个ip地址
一共有95个ip地址。
3.执行主目录中check程序,获取下一关密码
执行命令./check
,成功获取密码:nqFy6IxULl
__EOF__

本文链接:https://www.cnblogs.com/harmor/p/17258926.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南