下面继续来做第3台靶机:Lampiao。
靶机页面:https://www.vulnhub.com/entry/lampiao-1,249/
VMWare虚拟机镜像下载地址:https://download.vulnhub.com/lampiao/Lampiao.zip
这个靶机只有一个存放在root家目录中的flag,所以主要考察如何提权。
按照常规操作,下面首先还是应当扫描出靶机的IP地址以及端口号。但突然意识到,很多同学对端口这个概念可能还是不甚了解,而之前我也没有详细介绍这个概念,所以决定用几篇文章把这个非常重要的基础概念补充一下。在实际讲课的时候,这部分内容应该会放在课程一开始就讲,博客这里就不调整顺序了。
--------------------------------------------------------------------------------
首先需要明确的是,我们这里所说的端口并不是在某台设备上真实存在的物理接口,而是纯粹的逻辑接口,也就是说它们都是操作系统里的概念。
我们都知道,在网络通信时可以通过IP地址来定位网络中的计算机,但是在每台计算机中可能会同时运行了很多程序,那么又该如何来区分这些程序呢?
比如在一台电脑上同时运行了浏览器、微信、游戏等各种网络程序,当从网络上接收到一个数据之后,电脑是如何区分这个数据应该交由哪个程序来处理呢?
这就要用到端口号。端口号的主要作用就是用来区分各种网络应用程序。
网络上传送的所有数据其实不仅仅只携带了IP地址,还会带有端口号。“IP地址+端口号”称为Socket,通过Socket就可以准确定位网络上某台主机中所运行的某个程序(准确地说应该是某个进程)。网络通信的本质是网络中不同主机上所运行的进程之间的通信,而这些主机和进程都要通过Socket进行区分。
下面还是通过实际操作来说明。
无论Windows还是Linux系统中都自带了一个netstat命令,这是一个非常重要的网络命令,通过它就可以查看当前系统正在使用哪些端口与网络上的其它主机在进行通信。
下面以从我的系统访问51CTO博客为例,我的电脑IP是192.168.31.184,用ping命令查出51CTO博客服务器的IP是:203.107.44.140。
用浏览器打开51CTO博客,然后执行netstat -an命令查看端口状态。从中就能找到,当前主机(192.168.31.184)正在与51CTO博客服务器(203.107.44.140)进行通信,最后一列的“ESTABLISHED”表示它们之间建立了一个连接,目前正处于通信状态。
所以,网络通信都是在socket之间进行的。
“192.168.31.184:55203”是我所使用主机的socket,55203是在我的主机上使用的端口号。
“203.107.44.140:443”是51CTO博客服务器的socket,443是这台服务器使用的端口号。