概述:MongoDB 及其弱密码研究整理
0x02下载安装
下载地址:Install MongoDB Community Kubernetes Operator | MongoDB
安装文档:Install MongoDB Community Edition on Windows — MongoDB Manual
从二进制文件安装
For command line options invoke:
$ ./mongod --help
To run a single server database:
$ sudo mkdir -p /data/db
$ ./mongod
$
$ # The mongo javascript shell connects to localhost and test database by default:
$ ./mongo
> help
安装为 windows 服务
-
创建数据目录和日志目录
-
安装为服务
# 安装服务 mongod --dbpath C:\MongoDB\mongodb-win32-x86_64-windows-7.0.4\bin\data\db --logpath C:\MongoDB\mongodb-win32-x86_64-windows-7.0.4\bin\log\mongod.log --install --serviceName "MongoDB 7.0.4" # 启动服务 net start "MongoDB 7.0.4"
shell
MongoDB 的 shell 执行需要单独下载 Monogosh 。只要安装了 MongoDB 服务就可以运行 Monogosh 中 bin目录下的 monogosh.exe 连接即可。
# 直接运行 mongosh 会连接到默认的数据库
# 查看数据库
show dbs
# 登录
db.auth('admin','123456')
0x02 用户密码相关
参考文章:MongoDB设置登录账号和密码_mongodb创建用户名和密码-CSDN博客
0x03 创建数据库及用户
# 创建集合
use shiyanlou
# 插入数据
db.test1.insertOne(
... {name: 'Kobe', age: 39, addr: ['Los', 'Tor']}
... )
# 创建用户
use shiyanlou // 跳转到需要添加用户的数据库
db.createUser({
user: 'tao', // 用户名
pwd: 'Abc123++', // 密码
roles:[{
role: 'readWrite', // 读写权限角色
db: 'myMongoDB' // 数据库名
}]
})
# 查询数据
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
shiyanlou 0.000GB
> show collections
player
> db.player.find()
{ "_id" : ObjectId("5e4b6d358b5daaaae4d74f88"), "name" : "James", "age" : 33, "addr" : [ "Mim", "Cle" ] }
{ "_id" : ObjectId("5e4b6d358b5daaaae4d74f89"), "name" : "Wade", "age" : 34, "addr" : [ "Mim", "Chi" ] }
{ "_id" : ObjectId("5e4b6d358b5daaaae4d74f8a"), "name" : "Curry", "age" : 35, "addr" : [ "Gsw" ] }
>用户角色
| 角色描述 | 角色标识 |
|---|---|
| 数据库用户角色 | read、readWrite |
| 数据库管理角色 | dbAdmin、dbOwner、userAdmin |
| 集群管理角色 | clusterAdmin、clusterManager、clusterMonitor、hostManager |
| 备份恢复角色 | backup、restore |
| 所有数据库角色 | readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase |
| 超级用户角色 | root |
查看用户
MongoDB 查看所有用户账号信息_mongodb查看用户-CSDN博客
-
查看全局所有用户
> use admin switched to db admin > db.auth('admin','123456') 1 > db.system.users.find().pretty() -
查看当前数据库
> use admin switched to db admin > show users -
注销当前用户
db.runCommand( { logout: 1 } )
登录流程
[0x0] mongod!mongo::AuthCounter::getMechanismCounter 0x8c032fca08 0x7ff7c058c2a6
[0x1] mongod!mongo::AuthenticationSession::setMechanismName+0x1f6 0x8c032fca10 0x7ff7bfd143d2
[0x2] mongod!mongo::auth::`anonymous namespace'::runSaslStart+0x1f2 0x8c032fcc30 0x7ff7bfd1281a
[0x3] mongod!mongo::doSpeculativeSaslStart::__l3::<lambda_1>::operator()+0x93 0x8c032fcd90 0x7ff7bfd1407f
[0x4] mongod!mongo::AuthenticationSession::doStep<`mongo::doSpeculativeSaslStart'::`3'::<lambda_1> >+0xda 0x8c032fcd90 0x7ff7bfd1407f
[0x5] mongod!mongo::doSpeculativeSaslStart+0x46f 0x8c032fcfa0 0x7ff7bfc639d2
[0x6] mongod!mongo::handleHelloAuth+0x312 0x8c032fd0b0 0x7ff7bfc60b4d
[0x7] mongod!mongo::repl::`anonymous namespace'::CmdHello::runWithReplyBuilder+0x118d 0x8c032fd200 0x7ff7c18acf57
[0x8] mongod!mongo::BasicCommandWithReplyBuilderInterface::Invocation::run+0x107 0x8c032fde70 0x7ff7c18a57e5
[0x9] mongod!mongo::CommandHelpers::runCommandInvocation+0x3e 0x8c032fdfa0 0x7ff7c18ad888
[0xa] mongod!mongo::CommandHelpers::runCommandInvocation::__l4::<lambda_1>::operator()+0xc9 0x8c032fdfa0 0x7ff7c18ad888
[0xb] mongod!mongo::makeReadyFutureWith<`mongo::CommandHelpers::runCommandInvocation'::`4'::<lambda_1> >+0xe5 0x8c032fdfa0 0x7ff7c18ad888
[0xc] mongod!mongo::CommandHelpers::runCommandInvocation+0x68 0x8c032fe020 0x7ff7bfbe6bfe
[0xd] mongod!mongo::`anonymous namespace'::runCommandInvocation+0xae 0x8c032fe0b0 0x7ff7bfbd3836
[0xe] mongod!`mongo::`anonymous namespace'::InvokeCommand::run'::`2'::<lambda_1>::operator()+0x2a6 0x8c032fe130 0x7ff7bfbcbd2b
[0xf] mongod!mongo::makeReadyFutureWith<`mongo::`anonymous namespace'::InvokeCommand::run'::`2'::<lambda_1> >+0x1b 0x8c032fe260 0x7ff7bfbe6816
[0x10] mongod!mongo::`anonymous namespace'::InvokeCommand::run+0x46 0x8c032fe2a0 0x7ff7bfbcbb07
[0x11] mongod!mongo::`anonymous-namespace'::RunCommandImpl::_runCommand::__l7::<lambda_2>::operator()+0x10 0x8c032fe350 0x7ff7bfbdef39
[0x12] mongod!mongo::future_util::AsyncState<mongo::`anonymous namespace'::InvokeCommand>::thenWithState::__l2::<lambda_1>::operator()+0x14 0x8c032fe350 0x7ff7bfbdef39
[0x13] mongod!mongo::makeReadyFutureWith<`mongo::future_util::AsyncState<mongo::`anonymous namespace'::InvokeCommand>::thenWithState<`mongo::`anonymous namespace'::RunCommandImpl::_runCommand'::`7'::<lambda_2> >'::`2'::<lambda_1> >+0x47 0x8c032fe350 0x7ff7bfbdef39
[0x14] mongod!mongo::future_util::AsyncState<mongo::`anonymous namespace'::InvokeCommand>::thenWithState+0x4c 0x8c032fe450 0x7ff7bfbdf86d
[0x15] mongod!mongo::`anonymous namespace'::RunCommandImpl::_runCommand+0x179 0x8c032fe450 0x7ff7bfbdf86d
[0x16] mongod!mongo::`anonymous namespace'::RunCommandImpl::_runImpl+0x7d 0x8c032fe530 0x7ff7bfbcbd69
[0x17] mongod!mongo::`anonymous-namespace'::RunCommandImpl::run::__l2::<lambda_1>::operator()+0x14 0x8c032fe590 0x7ff7bfbe69b5
[0x18] mongod!mongo::makeReadyFutureWith<`mongo::`anonymous namespace'::RunCommandImpl::run'::`2'::<lambda_1> >+0x29 0x8c032fe590 0x7ff7bfbe69b5
[0x19] mongod!mongo::`anonymous namespace'::RunCommandImpl::run+0x45 0x8c032fe5d0 0x7ff7bfbcb927
[0x1a] mongod!mongo::`anonymous-namespace'::ExecCommandDatabase::_commandExec::__l2::<lambda_1>::()::__l7::<lambda_2>::operator()+0x10 0x8c032fe6c0 0x7ff7bfbd240f
[0x1b] mongod!mongo::future_util::AsyncState<mongo::`anonymous namespace'::RunCommandImpl>::thenWithState::__l2::<lambda_1>::operator()+0x14 0x8c032fe6c0 0x7ff7bfbd240f
[0x1c] mongod!mongo::makeReadyFutureWith<`mongo::future_util::AsyncState<mongo::`anonymous namespace'::RunCommandImpl>::thenWithState<``mongo::`anonymous namespace'::ExecCommandDatabase::_commandExec'::`2'::<lambda_1>::operator()'::`7'::<lambda_2> >'::`2'::<lambda_1> >+0x47 0x8c032fe6c0 0x7ff7bfbd240f
[0x1d] mongod!mongo::future_util::AsyncState<mongo::`anonymous namespace'::RunCommandImpl>::thenWithState+0x48 0x8c032fe7c0 0x7ff7bfbda36f
[0x1e] mongod!`mongo::`anonymous namespace'::ExecCommandDatabase::_commandExec'::`2'::<lambda_1>::operator()+0x21f 0x8c032fe7c0 0x7ff7bfbda36f
[0x1f] mongod!mongo::`anonymous namespace'::ExecCommandDatabase::_commandExec+0x15f 0x8c032fe8b0 0x7ff7bfbcbcf8
[0x20] mongod!mongo::`anonymous-namespace'::ExecCommandDatabase::run::__l2::<lambda_1>::operator()+0x13 0x8c032fea20 0x7ff7bfbd15d9
[0x21] mongod!mongo::makeReadyFutureWith<`mongo::`anonymous namespace'::ExecCommandDatabase::run'::`2'::<lambda_1> >+0x28 0x8c032fea20 0x7ff7bfbd15d9
[0x22] mongod!mongo::`anonymous-namespace'::ExecCommandDatabase::run+0x17 0x8c032fea60 0x7ff7bfbcb50b
[0x23] mongod!mongo::`anonymous-namespace'::executeCommand::__l2::<lambda_2>::()::__l2::<lambda_1>::operator()+0x17 0x8c032fea60 0x7ff7bfbcb50b
[0x24] mongod!`mongo::future_util::AsyncState<mongo::`anonymous namespace'::ExecCommandDatabase>::thenWithState<``mongo::`anonymous namespace'::executeCommand'::`2'::<lambda_2>::operator()'::`2'::<lambda_1> >'::`2'::<lambda_1>::operator()+0x49 0x8c032fea60 0x7ff7bfbcb50b
[0x25] mongod!mongo::makeReadyFutureWith<`mongo::future_util::AsyncState<mongo::`anonymous namespace'::ExecCommandDatabase>::thenWithState<``mongo::`anonymous namespace'::executeCommand'::`2'::<lambda_2>::operator()'::`2'::<lambda_1> >'::`2'::<lambda_1> >+0x1b 0x8c032feb90 0x7ff7bfbcc4b6
[0x26] mongod!mongo::future_util::AsyncState<mongo::`anonymous namespace'::ExecCommandDatabase>::thenWithState+0x59 0x8c032febd0 0x7ff7bfbd208f
[0x27] mongod!mongo::`anonymous-namespace'::executeCommand::__l2::<lambda_2>::operator()+0x64 0x8c032febd0 0x7ff7bfbd208f
[0x28] mongod!mongo::future_details::call+0x64 0x8c032febd0 0x7ff7bfbd208f
[0x29] mongod!mongo::future_details::throwingCall<`mongo::`anonymous namespace'::executeCommand'::`2'::<lambda_2> &,mongo::future_details::FakeVoid>+0x76 0x8c032febd0 0x7ff7bfbd208f
[0x2a] mongod!``mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::executeCommand'::`2'::<lambda_2> >'::`7'::<lambda_3>::operator()'::`2'::<lambda_1>::operator()+0x5f 0x8c032fec30 0x7ff7bfbb191a
[0x2b] mongod!mongo::unique_function<void __cdecl(mongo::future_details::SharedStateBase *)>::operator()+0x14 0x8c032fecc0 0x7ff7bfbc8870
[0x2c] mongod!mongo::future_details::SharedStateBase::transitionToFinished+0x3a 0x8c032fecc0 0x7ff7bfbc8870
[0x2d] mongod!mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::propagateResultTo::__l2::<lambda_1>::operator()+0x10 0x8c032fecf0 0x7ff7bfbd1eea
[0x2e] mongod!mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::generalImpl<`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::propagateResultTo'::`2'::<lambda_1>,`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::propagateResultTo'::`2'::<lambda_2>,`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::propagateResultTo'::`2'::<lambda_3> >+0x30 0x8c032fecf0 0x7ff7bfbd1eea
[0x2f] mongod!mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::propagateResultTo+0x41 0x8c032fed30 0x7ff7bfbb191a
[0x30] mongod!mongo::SemiFuture<void>::propagateResultTo+0x46 0x8c032fed30 0x7ff7bfbb191a
[0x31] mongod!``mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::executeCommand'::`2'::<lambda_1> >'::`7'::<lambda_3>::operator()'::`2'::<lambda_1>::operator()+0x9a 0x8c032fed30 0x7ff7bfbb191a
[0x32] mongod!mongo::unique_function<void __cdecl(mongo::future_details::SharedStateBase *)>::operator()+0x14 0x8c032fedc0 0x7ff7bfbe2c93
[0x33] mongod!mongo::future_details::SharedStateBase::transitionToFinished+0x3a 0x8c032fedc0 0x7ff7bfbe2c93
[0x34] mongod!mongo::Promise<void>::emplaceValue::__l2::<lambda_1>::operator()+0x8 0x8c032fedf0 0x7ff7bfbd4219
[0x35] mongod!mongo::Promise<void>::setImpl+0x19 0x8c032fedf0 0x7ff7bfbd4219
[0x36] mongod!mongo::Promise<void>::emplaceValue+0x19 0x8c032fedf0 0x7ff7bfbd4219
[0x37] mongod!mongo::`anonymous namespace'::executeCommand+0x353 0x8c032fedf0 0x7ff7bfbd4219
[0x38] mongod!mongo::`anonymous-namespace'::receivedCommands::__l2::<lambda_1>::operator()+0x27 0x8c032fefc0 0x7ff7bfbca28b
[0x39] mongod!mongo::future_details::call+0x27 0x8c032fefc0 0x7ff7bfbca28b
[0x3a] mongod!mongo::future_details::throwingCall+0x27 0x8c032fefc0 0x7ff7bfbca28b
[0x3b] mongod!`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::receivedCommands'::`2'::<lambda_1> >'::`7'::<lambda_1>::operator()+0x49 0x8c032fefc0 0x7ff7bfbca28b
[0x3c] mongod!mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::generalImpl<`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::receivedCommands'::`2'::<lambda_1> >'::`7'::<lambda_1>,`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::receivedCommands'::`2'::<lambda_1> >'::`7'::<lambda_2>,`mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then<mongo::CleanupFuturePolicy<0>,`mongo::`anonymous namespace'::receivedCommands'::`2'::<lambda_1> >'::`7'::<lambda_3> >+0x3b 0x8c032ff040 0x7ff7bfbe5cf0
[0x3d] mongod!mongo::future_details::FutureImpl<mongo::future_details::FakeVoid>::then+0x34 0x8c032ff0a0 0x7ff7bfbe67be
[0x3e] mongod!mongo::Future<void>::then+0x34 0x8c032ff0a0 0x7ff7bfbe67be
[0x3f] mongod!mongo::Future<void>::then+0x34 0x8c032ff0a0 0x7ff7bfbe67be
[0x40] mongod!mongo::`anonymous namespace'::receivedCommands+0x190 0x8c032ff0a0 0x7ff7bfbe67be
[0x41] mongod!mongo::`anonymous namespace'::CommandOpRunner::run+0x3e 0x8c032ff250 0x7ff7bfbe39df
[0x42] mongod!mongo::ServiceEntryPointCommon::handleRequest+0x2cf 0x8c032ff2a0 0x7ff7bfbc5c89
[0x43] mongod!mongo::ServiceEntryPointMongod::handleRequest+0x49 0x8c032ff4e0 0x7ff7c065fb9f
[0x44] mongod!mongo::transport::SessionWorkflow::Impl::_dispatchWork+0x21f 0x8c032ff510 0x7ff7c065de9a
[0x45] mongod!mongo::transport::SessionWorkflow::Impl::_doOneIteration::__l2::<lambda_1>::operator()+0x2d 0x8c032ff5a0 0x7ff7c065ebc4
[0x46] mongod!mongo::future_details::call+0x3f 0x8c032ff5a0 0x7ff7c065ebc4
[0x47] mongod!mongo::future_details::throwingCall<`mongo::transport::SessionWorkflow::Impl::_doOneIteration'::`2'::<lambda_1> &,std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >+0x5a 0x8c032ff5a0 0x7ff7c065ebc4
[0x48] mongod!`mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then<mongo::CleanupFuturePolicy<0>,`mongo::transport::SessionWorkflow::Impl::_doOneIteration'::`2'::<lambda_1> >'::`7'::<lambda_1>::operator()+0x34 0x8c032ff5f0 0x7ff7c065d839
[0x49] mongod!mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::generalImpl<`mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then<mongo::CleanupFuturePolicy<0>,`mongo::transport::SessionWorkflow::Impl::_doOneIteration'::`2'::<lambda_1> >'::`7'::<lambda_1>,`mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then<mongo::CleanupFuturePolicy<0>,`mongo::transport::SessionWorkflow::Impl::_doOneIteration'::`2'::<lambda_1> >'::`7'::<lambda_2>,`mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then<mongo::CleanupFuturePolicy<0>,`mongo::transport::SessionWorkflow::Impl::_doOneIteration'::`2'::<lambda_1> >'::`7'::<lambda_3> >+0x129 0x8c032ff690 0x7ff7c065fcbb
[0x4a] mongod!mongo::future_details::FutureImpl<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then+0x3e 0x8c032ff750 0x7ff7c065e8dd
[0x4b] mongod!mongo::Future<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then+0x3e 0x8c032ff750 0x7ff7c065e8dd
[0x4c] mongod!mongo::Future<std::unique_ptr<mongo::transport::SessionWorkflow::Impl::WorkItem,std::default_delete<mongo::transport::SessionWorkflow::Impl::WorkItem> > >::then+0x3e 0x8c032ff750 0x7ff7c065e8dd
[0x4d] mongod!mongo::transport::SessionWorkflow::Impl::_doOneIteration+0x7b 0x8c032ff750 0x7ff7c065e8dd
[0x4e] mongod!`mongo::transport::SessionWorkflow::Impl::_scheduleIteration'::`3'::<lambda_1>::operator()+0xad 0x8c032ff880 0x7ff7c0660ac1
[0x4f] mongod!`mongo::unique_function<void __cdecl(mongo::Status)>::makeImpl<`mongo::transport::SessionWorkflow::Impl::_scheduleIteration'::`3'::<lambda_1> >'::`2'::SpecificImpl::call+0x21 0x8c032ff930 0x7ff7c065e72d
[0x50] mongod!mongo::unique_function<void __cdecl(mongo::Status)>::operator()+0x18 0x8c032ff960 0x7ff7c06609d1
[0x51] mongod!mongo::transport::SessionWorkflow::Impl::_captureContext::__l2::<lambda_1>::()::__l2::<lambda_1>::operator()+0x39 0x8c032ff960 0x7ff7c06609d1
[0x52] mongod!mongo::ClientStrand::run+0x6f 0x8c032ff960 0x7ff7c06609d1
[0x53] mongod!`mongo::transport::SessionWorkflow::Impl::_captureContext'::`2'::<lambda_1>::operator()+0x8d 0x8c032ff960 0x7ff7c06609d1
[0x54] mongod!`mongo::unique_function<void __cdecl(mongo::Status)>::makeImpl<`mongo::transport::SessionWorkflow::Impl::_captureContext'::`2'::<lambda_1> >'::`2'::SpecificImpl::call+0x21 0x8c032ff9b0 0x7ff7c18b040a
[0x55] mongod!mongo::unique_function<void __cdecl(mongo::Status)>::operator()+0x18 0x8c032ff9e0 0x7ff7c18afa32
[0x56] mongod!mongo::transport::ServiceExecutorSynchronous::SharedState::WorkerThreadInfo::run+0x62 0x8c032ff9e0 0x7ff7c18afa32
[0x57] mongod!`mongo::transport::ServiceExecutorSynchronous::SharedState::schedule'::`2'::<lambda_2>::operator()+0xca 0x8c032ff9e0 0x7ff7c18afa32
[0x58] mongod!mongo::unique_function<void __cdecl(void)>::operator()+0xf 0x8c032ffa30 0x7ffc64bc9363
[0x59] mongod!mongo::transport::launchServiceWorkerThread::__l3::<lambda_1>::operator()+0xf 0x8c032ffa30 0x7ffc64bc9363
[0x5a] mongod!std::invoke+0xf 0x8c032ffa30 0x7ffc64bc9363
[0x5b] mongod!std::_Apply_impl+0xf 0x8c032ffa30 0x7ffc64bc9363
[0x5c] mongod!std::apply+0xf 0x8c032ffa30 0x7ffc64bc9363
[0x5d] mongod!mongo::stdx::thread::{ctor}::__l1::<lambda_4_>::operator()+0x29 0x8c032ffa30 0x7ffc64bc9363
[0x5e] mongod!std::invoke+0x29 0x8c032ffa30 0x7ffc64bc9363
[0x5f] mongod!std::thread::_Invoke<std::tuple<`mongo::stdx::thread::thread<`mongo::transport::launchServiceWorkerThread'::`3'::<lambda_1>,0>'::`1'::<lambda_4_> >,0>+0x32 0x8c032ffa30 0x7ffc64bc9363
[0x60] ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x93 0x8c032ffa60 0x7ffc65a3257d
[0x61] KERNEL32!BaseThreadInitThunk+0x1d 0x8c032ffa90 0x7ffc66fcaa58
[0x62] ntdll!RtlUserThreadStart+0x28 0x8c032ffac0 0x0
二进制文件分析
数据库用户

二进制文件
_mdb_catalog.wt
该文件指明了系统的相关集合保存在哪个文件中,以 admin.system.users 为例,其保存的 Bson 转为 Json 的数据内容如下所示,ident 为保存的文件名。
{
"ident": "collection-0--3024240359348764740",
"idxIdent": {
"_id_": "index-1--3024240359348764740",
"user_1_db_1": "index-2--3024240359348764740"
},
"md": {
"indexes": [
{
"backgroundSecondary": false,
"head": 0,
"multikey": false,
"multikeyPaths": {
"_id": "00"
},
"ready": true,
"spec": {
"key": {
"_id": 1
},
"name": "_id_",
"v": 2
}
},
{
"backgroundSecondary": false,
"head": 0,
"multikey": false,
"multikeyPaths": {
"db": "00",
"user": "00"
},
"ready": true,
"spec": {
"key": {
"db": 1,
"user": 1
},
"name": "user_1_db_1",
"unique": true,
"v": 2
}
}
],
"ns": "admin.system.users",
"options": {
"uuid": "b39f471c8ebe4eae8af34222cd30515e"
}
},
"ns": "admin.system.users"
}collection-0—*.wt
- MongoDB 的 用户数据保存在
collection-0--*.wt文件中,如果数据库没有用户,则不存在这个文件。 collection-0--*.wt文件的0x1000和0x5000偏移处保存了用户相关数据,别的文件也基本都是