当前位置: 首页 > news >正文

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

目录

一、测试环境

二、测试目的

三、操作过程

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 unquote

with 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的应急响应排查思路。

相关文章:

  • JWT+redis实现令牌刷新优化方案
  • STM32内存五区及堆栈空间大小设置(启动文件浅析)
  • yolov8乱改版(使用最新源码版本ultralytics-8.3.80——该项目库集成了yolov12)
  • Nuxt.js 3【详解】敏感信息处理 -- 环境变量配置
  • Spring Boot从入门到精通:一站式掌握企业级开发
  • linux里面的过滤符号 | 是如何实现的
  • Python语法糖教程第2天—Python装饰器深度解析与高阶应用指南
  • Element实现el-dialog弹框移动、全屏功能
  • 鸿蒙Next如何自定义标签页
  • Vue 表单优化:下拉框值改变前的确认提示与还原逻辑实现
  • C++ 的时间库之六:日历和时区
  • ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图
  • 使用python做http代理请求
  • Metal学习笔记八:纹理
  • Springboot基础篇(3):控制反转与Bean对象
  • 深度生成模型(二)——基本概念与数学建模
  • 4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)
  • Vue+Element UI table表格,数据展示错位(已解决)
  • Gatling介绍
  • ArcGIS Pro可见性分析:精通地形视线与视域分析
  • 电商网站开发教程/热门推广平台
  • 别人盗用我的网站备案号怎么办/广州网络seo公司
  • 洛阳网站推广优化/app代理推广合作
  • 收费网站怎么做/b2b网站大全
  • 个人网站备案模板/市场监督管理局职责范围
  • 网站建设织梦源码/品牌广告投放