玄机-第二章 日志分析-mysql应急响应的测试报告

ops/2025/3/1 0:26:05/

目录

一、测试环境

二、测试目的

三、操作过程

Flag1

Flag2

Flag3

Flag4

四、结论


 

一、测试环境

靶场介绍:国内厂商设置的玄机靶场,以应急响应题目著名。

地址:https://xj.edisec.net/challenges/23

环境ssh登录:ssh env.xj.edisec.net -p 31871

靶机简介:

二、测试目的

分析靶机环境,进行应急响应,完成靶场目标。

三、操作过程

参考文章:https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/docs/Xuanji/Unit-2/23/

Flag1

题目:黑客第一次写入的shell flag{关键字符串}

寻找shell文件,根据php环境,查找eval函数来寻找shell

find / -name '*.php' -type f | xargs grep 'eval('

查看shell文件,找到关键字符串

Flag1:flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

Flag2

题目:黑客反弹shell的ip flag{ip}

cd /var/log/mysql
cat error.log

查询mysql的错误日志,可以发现有陌生IP连接,保存了可疑的1.sh文件

在网页目录中,common.php页面找到数据库的登录凭证

root/334cc35b3c704593

SELECT * FROM mysql.general_log ORDER BY event_time DESC;
SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'log_bin';

进入mysql查看是否开启日志,没有开启日志

查看apache的登录日志,可以看到与数据库有交互

使用脚本筛选日志信息

from urllib.parse import unquotewith open("./access.log", "r") as f:data_log = f.read().strip().split("\n")data_log = [i.split('"') for i in data_log]data_log = [i for i in data_log if i[1].startswith("POST /adminer.php")]for i in data_log:tmp = i[1].split(" ")[1]tmp = unquote(tmp)print(tmp)

将登录日志拷贝出来进行处理,靶机缺少python库文件

可以看到使用sql注入,写入1.sh文件,内容是base64加密的内容

解密得到反弹shell的IP

Flag2:flag{192.168.100.13}

Flag3

题目:黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx

select * from func;

查看mysql的自定义函数,可以看到黑客使用了udf提权,成功调用了系统命令

查找mysqludf.so的动态库文件

find / -name 'mysqludf.so'

找到文件路径,但这不是正确答案

进入plugin目录查看,除了mysqludf.so就是udf.so文件很可疑了,并且udf.so文件的修改时间和mysqludf.so文件一致

完整路径:/usr/lib/mysql/plugin/udf.so

MD5加密后就是正确答案

Flag3:flag{b1818bde4e310f3d23f1005185b973e7}

Flag4

题目:黑客获取的权限 flag{whoami后的值}

进入mysql并调用系统命令,执行whoami命令,得到flag

Flag4:flag{mysql}

四、结论

熟悉mysql的应急响应排查思路。


http://www.ppmy.cn/ops/162088.html

相关文章

Redis主从架构+使用sentinel实现主从架构高可用

一、redis主从架构 (一)复制的工作过程: 主库会基于ping check方式检查从库是否在线,如果在线则直接同步数据文件至从服务端,从服务端也可以主动发送同步请求到主服务端,主库如果是启动了持久化功能时&am…

朝天椒 USB 服务器解决投标CA盾异地连接

本文探讨朝天椒USB服务器用Usb Over Network技术,解决招投标CA盾的远程连接问题。 在招投标活动中,CA盾作为保障数据安全、身份认证以及电子签章合法性的关键设备,发挥着不可或缺的作用。然而,传统CA盾的使用方式在实际操作中存在…

机器学习基础入门——机器学习库介绍(NumPy、pandas、Matplotlib)

机器学习库介绍(NumPy、pandas、Matplotlib) 在 Python 机器学习的领域中,NumPy、pandas 和 Matplotlib 是三个不可或缺的基础库。它们分别在数值计算、数据处理与分析以及数据可视化方面发挥着关键作用,极大地提升了开发效率与数…

flutter 局部刷新控件Selector源码实现原理

Flutter 中的 Selector 组件是 provider 包提供的一个优化工具,用于在状态管理中仅选择所需数据片段,避免不必要的 Widget 重建。其实现原理基于以下几个关键点: 1. 核心设计目标 选择性重建:仅当特定数据变化时触发 Widget 重建&…

深入探索C#中的async和await:原理、使用方法与最佳实践

在现代软件开发中,异步编程(Asynchronous Programming)已经成为一个至关重要的技能,特别是在高性能、响应迅速的应用程序开发中。C#作为一种成熟的编程语言,近年来引入了async和await关键词来简化异步编程的写法&#…

DavGo简单部署WebDAV服务

目录 功能特性使用方法1. 下载2. 配置 config.yaml3. 运行服务器4. 可以用来挂载WebDav的软件 反向代理 DavGo 是一个用 Go 语言实现的轻量级 WebDAV 服务器,支持动态配置多个 WebDAV 服务实例,每个实例可以独立设置根目录、认证信息和读写模式。 功能特…

Nginx 配置前端后端服务

在配置Nginx以支持前端和后端服务时,需要了解Nginx的基本配置语法和结构,并依次设置Nginx作为前端静态资源服务器和反向代理服务器以连接后端应用。以下是详细的配置步骤: 一、Nginx基本配置语法和结构 Nginx的配置文件通常位于/etc/nginx/…

【python随手记】——读取文本文件内容转换为json格式

文章目录 前言一、TXT文件转换为JSON数组1.txt文件内容2.python代码3.输出结果 二、TXT文件转换为JSON对象1.txt文件2.python代码3.输出结果 前言 场景:用于读取包含空格分隔数据的TXT文件,并将其转换为结构化JSON文件 一、TXT文件转换为JSON数组 1.tx…