然而在内网渗透中,除了kali、metasploit等高能的存在以外,还有一款神器也常常容易遭到忽略----PowerShell,因此本次学习将从PowerShell基础语法切入以及利用PowerShell...c.哈希表的使用:之前创建空数组是使用@(),而创建哈希表用到的是@{},此处的哈希表同python中的字典类型类似: ?...管道: a.Powershell管道:传统的CMD管道是基于文本,而powershell管道则是基于对象: ? 对象(对象=属性+方法) a.创建对象: ?...0x03 Powershell值得学习的理由 众所周知,Linux的shell相比windows的cmd好用程度不止一点,无论是命令、正则表达式还是管道都挺人性化,不仅可以完成复杂的问题,而且效率还很高...可将数据输出为HTML格式、CSV格式等。 ? 打开文件: ? 相比之下,原先的cmd并未有如此便捷的功能命令,在以上powershell不仅可以利用管道,正则表达式。
哈希表(HashMap)哈希表(或哈希映射)是一种通过哈希函数将键映射到值的高效数据结构,常用于实现快速查找、插入和删除操作。...哈希表的核心优势在于它能提供常数时间复杂度O(1)的查找、插入和删除操作(在理想情况下)。目标操作:插入(Insert):将一个键值对插入哈希表。查找(Get):根据键查找对应的值。...处理冲突:当两个键哈希到同一个桶时,哈希表应能处理冲突问题,常见的方式有链式地址法(Chaining)和开放地址法(Open Addressing)。...哈希表的实现需要处理哈希函数、碰撞处理、动态扩展等问题。我们将使用Rust的标准库中的DefaultHasher来实现哈希函数,并使用链式地址法来处理碰撞。...哈希表(HashMap)哈希表是一种通过哈希函数将键映射到值的数据结构。我们将实现一个简单的哈希表,支持插入、查找和删除操作。
目录前言数据库索引概述从零实现基于哈希表的数据库索引设计思路优化前后的性能对比具体示例源码优劣评估结束语前言作为开发者,尤其是做后端开发,对于数据库索引相关内容应该非常熟悉,尤其是涉及到数据库查询时候,...最近在做关于Go语言相关的学习使用,正好涉及到数据库查询相关的内容,那么本文就来详细介绍数据库索引的概念,并使用Go语言从零开始逐步实现基于哈希表的数据库索引,而且会分享一下设计思路,并对优化前后的性能进行对比...根据常理可知,常见的数据库索引实现方式包括B树、哈希表等。从零实现基于哈希表的数据库索引本文以使用Go语言来讲,然后从零开始逐步实现基于哈希表的数据库索引。...当进行查询的时候,可以通过哈希函数快速定位到对应的槽位,从而获取存储在该槽位中的数据。这就是一个完整的实现哈希表的数据库索引操作步骤,下面会分享详细的实现示例代码。...设计思路接下来再来分享一下,在使用Go语言实现基于哈希表的数据库索引的时候,需要考虑的几个关键方面的设计思路,具体如下所示:定义哈希表数据结构:先来定义一个哈希表数据结构,用于存储索引键值对,该哈希表可以是一个数组
从0到1打牢算法基础之手写一个哈希表 0.导语 目的:手写实现一个哈希表,采用拉链法构建,每个hash(key)对应的是一个红黑树。 看起来很简单,但可以学到很多东西。实现语言:C++。...1.简易版哈希表 我们将哈希表封装在一个类中,完成遍历的定义与声明以及构造、析构的实现: template class HashTable {...(hashtable[i]) delete hashtable[i]; } delete[]hashtable; }; 对于哈希表实现...false : true; } ★获取size ” /** * 获取哈希表元素个数 * @return */ int getSize() { return size; } ★最大容量与最小容量...1.优化哈希表 在gcc2.9版本中,底层的哈希表是以素数作为容量动态修改的,因此这里的优化从这里出发: 类内部开头添加下面数组: // 素数数组 const vector capacity
升级powershell版本 win7自带的powershell版本较低,这里将windows 7 sp1里自带的powershell升级到5.1版本。...$PsVersionTable 包含一个只读哈希表,该哈希表显示有关在当前会话中运行的 Windows PowerShell 版本的详 细信息。...#创建哈希表 $stu=@{ Name = "小明";Age="12";sex="男" } #访问哈希键值 $stu["Name"] #得到哈希表里元素的个数 $stu.Count #得到所有哈希键...$stu.Keys #得到所有哈希值 $stu.Values #插入新的键值 $stu.Name="令狐冲" #更新哈希表值 $stu.Name="赵强" #删除哈希表值 $stu.Remove("Name...操作字符串 详细参见这里 操作正则表达式 详细参见这里 操作文件 详细参见这里 操作注册表 详细参见这里 操作ini文件 详细参见这里 导入模块 详细参见这里 操作IIS Win2008 *,角色–>添加角色
从evtx文件,并开始寻找事件的表与数百万的事件 ....收集日志:用户可以手动收集CSV和EVTX格式的日志,或者使用本文后面讨论的powershell脚本来自动提取所需的日志。...日志收集器提取的目录的路径(Windows-log-collector-full-v3-CSV.ps1,Windows-log-collector-full-v3-EVTX.ps1) -o: 将在生成的输出表中使用的项目的名称...禁止进程连接到互联网 检测系统中正在运行的Psexec 检测到禁止连接到互联网的进程 检测Exchange Web服务利用,例如(CVE-2020-0688) 使用安全日志检测密码喷雾攻击 使用安全日志检测通过哈希攻击...使用安全日志检测用户添加到全局组的用户 使用安全日志检测用户添加的用户到通用组 使用安全日志检测从全局组中删除的用户 使用安全日志检测从通用组中删除的用户 使用安全日志检测从本地组中删除的用户 使用安全日志检测从全局组中删除的用户
注意:DCSync 攻击的对象如果是只读域控制器 (RODC),则会失效,因为 RODC 是不能参与复制同步数据到其他 DC 的。...该工具的原理是首先使用提供的用户登录凭据通过 smbexec 或者 wmiexec 远程连接至域控制器并获得高权限,进而从注册表中导出本地帐户的哈希,同时通过 Dcsync 或从 NTDS.dit 文件中导出所有域用户的哈希..." exit 同样,也可以先使用 PowerShell 实现登录 whoami 用户,然后再使用 DCSync。...\$machine.ACC # 该注册表键路径只能在 SYSTEM 权限下访问 如果计算机加入域中,会将计算机帐户的密码同步到域控制器并保存在域控制器的 NTDS.dit 活动目录数据库文件中。...首先获取 MachineAccount 的密码哈希 可以直接在域控上使用 Mimikatz 通过注册表文件导出当前计算机帐户的密码哈希。
[TOC] PS 数组和哈希表 描述:数组引入PS会将命令执行后的结果文本按每一行作为元素存为数组,在命令的返回值不止一个结果时,PS也会自动把结果存储为数组。...数组属于引用类型,使用默认的的赋值运算符在两个变量之间赋值只是复制了一个引用两个变量共享同一份数据,则改变一个另一个也会相应的改变; 常规PS数组 基础示例: #1.PS将命令执行后返回的结果存入到数组之中...(HASH) 描述:哈希表存放的是键值对(Key-Value),在哈希表中不再仅仅限制使用数字寻址,可以使用任意类型的数据类型寻址。...在创建哈希表时就使用数组,因为创建数组和哈希表的的元素关键字不冲突一个是逗号,一个是分号。...#HASH表的键值对数量 2 PS > $hash[email protected]{ Name="WeiyiGeek";Age="15"; Books="C","C++","PYTHON"} #在哈希表中存储数组
这些密码哈希存储在域控制器(NTDS.DIT)中的数据库文件中,并包含一些附加信息,如组成员和用户。 NTDS.DIT 文件经常被操作系统使用,因此不能直接复制到另一个位置提取信息。...通过这种方式无需登录域控制器进行操作,在任意一台域内成员机上均可操作,使用命令如下: lsadump::dcsync /domain:pentestlab.local /all /csv ?...Empire PowerShell Empire 有两个模块可以通过 DCSync 获取域内哈希。这两个模块都需要以域管理员的权限执行。...结果将格式化为四个表:域、用户、ID 和 hash。...这些文件需要从域控制器复制到另一个主机进行进一步处理: ?
收集日志:用户可以手动收集CSV和EVTX格式的日志,也可以使用本文后面讨论的powershell脚本自动提取所需的日志。...分析CSV日志:APT-hunter使用内置库(csv)来解析CSV日志文件,然后使用Regex为APT-Hunter中使用的每个事件提取字段。用户可以使用提取的字段来创建他们的用例。...现在,您无需设置SIEM,日志收集器解决方案的实例来帮助您解析和提取所需的数据,也不必继续查看具有数百万个事件的表。 记录统计信息,这将有助于您发现异常情况。...支持将Windows事件日志导出为EVTX和CSV。 分析师可以将新的恶意可执行文件名称直接添加到list中。 提供输出为excel表,每个Log作为工作表。 此版本只是开始,更多用例即将出现。...禁止进程连接到互联网 检测系统中正在运行的Psexec 检测到禁止连接到互联网的进程 检测Exchange Web服务利用,例如(CVE-2020-0688) 使用安全日志检测密码喷雾攻击 使用安全日志检测通过哈希攻击
它包括域中所有用户的密码哈希值,为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。...然后在创建的卷影拷贝中将ntds.dit复制到C盘中: copy \\?...domain_computers_info.csv 注意,使用Ntdsxtract导出Ntds.dit表中的域散列值,要提供三个文件:即Ntds.dit导出的ntds.dit.export文件夹中的datatable...PowerShell下的利用 DSInternals PowerShell模块提供了构建在框架之上的易于使用的cmdlet。...PowerShell下的实现 即Invoke-DCSync.ps1脚本。
现在PowerShell已经发展到7.x版本了,而且还支持跨平台,Linux和macOS上也能跑。微软把它开源了,这在以前是不可想象的事情。...{$_.Name -replace '\.txt$','.bak'} PowerShell的版本更直观,而且支持正则表达式,处理复杂的重命名规则更方便。...Server02", "Server03") $numbers = 1..10 # 哈希表 $user = @{ Name = "John" Age = 30 Department...特别是涉及到.NET编程的部分,需要一定的编程基础。但即使不懂编程,掌握基本的PowerShell命令也能大大提高工作效率。 还有一点就是执行策略的问题。..."processes.csv" # 将结果转换为HTML Get-Service | ConvertTo-Html | Out-File "services.html" 正则表达式 PowerShell
这次将输出到CSV文件中。...PS C:Get-SQLServerAccess -ShowSum | export-csv c:tempsql-server-excessive-privs.csv [*] -------------...目录分区 NTDS.DIT文件由三个主表组成:数据表,链接表和SD表。...修改注册表允许DSRM账户远程访问 修改注册表hkey_local_machineSystemCurrentControlSetControlLsa路径下的DSRMAdminLogonBehavior的值为...简单的理解为SSP就是一个DLL,用来实现身份认证 将mimilib.dll复制到域控C:/窗/ SYSTEM32下 设置SSP 修改域控注册表位置: HKEY_LOCAL_MACHINE/System
为此,我创建了一个VSS快照并将ntds.dit文件与包含提取哈希所需的BOOTKEY的SYSTEM注册表hive一起复制。...经过一番调查,我了解到至少有几种不同的机制会强制存储明文凭据。 注:Cleartext(明文)并不意味着密码就是按原样存储。它们一般会使用RC4加密形式存储。...而用于加密和解密的密钥是SYSKEY,它被存储在注册表中,可以由域管理员提取。这意味着哈希值可逆为明文,因此我们称它为“可逆加密”。...下面,我来分解下之前那条使用PowerShell从AD中提取使用可逆加密存储密码用户的命令。...Filter – 使用PowerShell表达式告诉cmdlet搜索参数是什么。这里,我们搜索的是具有特定UserAccountControl属性值的用户帐户。
Export-Csv: 将 Microsoft .NET Framework 对象转换为一系列以逗号分隔的、长度可变的 (CSV) 字符串,并将这些字符串保存到 一个 CSV 文件中。...将标量输入提交给 -match 或 -notmatch 运算符时,如果检测到匹配,则会返回一个布尔值,并使用由所有匹配字符串值组成的哈希表填充 $Matches 自动变量。...$PsVersionTable 包含一个只读哈希表,该哈希表显示有关在当前会话中运行的 Windows PowerShell 版本的详 细信息。...# 表达式 结果 # 3+6/3*4 11 # 3+6/(3*4) 3.5 # (3+6)/3*4 12 - PowerShell 计算表达式的顺序可能不同于你使用的其他编程和脚本语言 在此示例中...构成的变量属于子表达式变量,这样的变量会先计算表达式,然后把表达式的值返回。
修改哈希表 我们基于链地址法实现的哈希表来封装实现 unordered_set 和 unordered_map ,但是由于实现的哈希表是 Key-Value 结构的并且我们的实现的哈希表缺少了迭代器,所以我们需要对之前实现的哈希表进行改造...//哈希表与迭代器相互依赖,需要前置声明 template class HashTable; template哈希表的指针 const HT* _pht; HTIterator(Node* node, const HT* pht) :_node(node) ,_pht(pht) {}..._node; } Self& operator++() { //... } }; 由于哈希表的特殊性,其迭代器的 ++ 较为复杂,也是实现哈希表迭代器的重点。...; } } } Const_Iterator end() const { return Const_Iterator(nullptr, this); } begin() 对应的迭代器应该是哈希表中第一个非空的哈希桶的头节点
本地调用 powershell.exe -exec bypass -command "& {import-module C:\Users\17782\Desktop\WinPwn-master\WinPwn-master...Mimikatz版本 内存中的Safetykatz 使用rundll32技术转储lsass 下载并运行混淆的Lazagne 转储浏览器凭证 定制的Mimikittenz版本 窃取Wifi凭证 转储SAM文件NTLM哈希...localreconmodules -> 收集已安装的软件,易受攻击的软件,共享,网络信息,组,特权等等 检查典型的漏洞,如SMB签名,LLMNR中毒,MITM6,通过HTTP的WSUS 检查Powershell...MS17-10扫描仪 适用于域系统的Bluekeep扫描仪 SQL Server发现和审核功能-PowerUpSQL MS-RPRN检查域控制器或所有系统 Grouper2的组策略审核 使用ADRecon在CSV...更多功能,大家可以自行到github上看文档,这个工具不错的。
Export-Csv: 将 Microsoft .NET Framework 对象转换为一系列以逗号分隔的、长度可变的 (CSV) 字符串,并将这些字符串保存到 一个 CSV 文件中。...将标量输入提交给 -match 或 -notmatch 运算符时,如果检测到匹配,则会返回一个布尔值,并使用由所有匹配字符串值组成的哈希表填充 $Matches 自动变量。...$PsVersionTable 包含一个只读哈希表,该哈希表显示有关在当前会话中运行的 Windows PowerShell 版本的详 细信息。...该表包括下列项: CLRVersion: 公共语言运行时 (CLR) 的版本 BuildVersion: 当前版本的内部版本号 PSVersion: Windows PowerShell 版本号...> 3.14*10*10 314 PS > 1+3-(2.4-5)*(7.899-4.444) 12.983 #由 $+圆括号+表达式 构成的变量属于子表达式变量,这样的变量会先计算表达式,然后把表达式的值返回
在PowerShell中,我们可以很容易地证明这些: 实际上,MongoDB 导入有点问题,因为它将冗长的内容和错误信息发送到不寻常的地方,因此在PowerShell中不能很好地工作。...其中主要的问题是,使用CSV,MongoDB对通用的格式和基于逗号分隔(CSV)的MIME类型文件(RFC4180)感知特别好,但是SQL Server则没有。...下面是一个PowerShell版本,它将数据库中的每个表保存到一个扩展的JSON文件中。它看起来有点复杂,但本质上它只是连接到一个数据库,对于每个表,它运行存储过程将数据转换为JSON。...注意,到实际数据的路径在键字段上有双引号。这是因为在WITH显式模式语句中的路径表达式中,美元符号是不合法的。...我甚至不想考虑将关系系统移植到MongoDB,除非它只是一个初始阶段。在本例中,我将在SQL Server上创建集合,在源数据库上从它们的组成表创建集合,并对分层文档数据库的最佳设计做出判断。
lsadump::dcsync /domain:pentestlab.local /all /csv ?...Empire PowerShell Empire有两个模块,利用域管权限通过DRS服务利用DCSync攻击检索域哈希。...然后,可以使用copy命令将文件从新卷复制到目标路径。...但是,渗透测试人员和红队可以滥用它来创建现有ntds.dit文件的快照,该文件可以复制到新位置以进行离线分析和密码哈希的提取。...由于C:驱动器中的所有文件都已复制到另一个位置(HarddiskVolumeShadowCopy1),因此它们不会被操作系统直接使用,因此可以访问并复制到另一个位置。