不知道有没有人注意过同样的代码是否封装在函数里,运行速度是不同的。...比如以下两个代码: 未封装在函数中的代码iteration.py: import datetime start = datetime.datetime.now() for i in range(10*...*8): pass end = datetime.datetime.now() print (end-start) 封装在函数中的def_iter.py: import datetime start...在函数中时i是一个局部变量,而不在函数中时就变成了全局变量。
对于 “” 的情况分析: 在输入 2 的时候调用的是 nextInt返回:nextInt 返回的是结束符之前的内容,并不会返回结束符 我们的输入:2 \r 以回车 ( \r ) 结尾,于是 2 被返回,...回车符 “\r” 它被丢弃在缓冲区中,现在缓冲区中,只有一个 \r ,于是 下一次 nextLine 扫描的时候就又扫描到了 \r,返回它之前的内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器在扫描过程中判断停止的依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列的,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列的函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 的时候会碰到读取空字符串的情况 解决方案:输入都用...nextLine ,做格式转换 输入 next 系列函数调用后,中间调用一次 nextLine 调用去掉了回车符后,再调用一次 nextLine 调用真正输入我们的数据 都使用 nextLine: class
不同的是Foo以内联(inline)赋值的方法进行初始化,而Bar则将初始化操作定义在静态构造函数中。...从Foo和Bar的IL代码可以看出,针对它们静态字段的初始化都放在静态构造函数中。...但是当我们调用一个并不涉及类型静态字段的Invoke方法时,定义在Foo中的静态构造函数会自动执行,但是定义在Bar中的则不会,由此可以看出一个类型的静态构造函数的执行时机与类型是否具有beforefieldinit...具体规则如下,这一个规则直接定义在CLI标准ECMA-335中,静态构造函数在此标准中被称为类型初始化器(Type Initializer)或者.cctor。...四、关于“All-Zero”结构体 如果我们在一个结构体中显式定义了一个静态构造函数,当我们调用其构造函数之前,静态构造函数会自动执行。
很多时候,在一些文章中,工具利用中,都会提到管道(pipe)。那么,什么是管道呢?管道能做什么呢?本文以 windows 管道为主,边学习边整理,希望可以给其他感兴趣的人提供帮助。...在 windows server 2003 及以下的版本中,默认开启了匿名管道通信,但是之上的系统版本中(包括 windows 7)默认禁止匿名管道通信。...也就是说,在高版本中,或者说禁止匿名访问的系统中,如果想要实现远程管道访问,与管道进行通信,需要一个有效的身份进行验证。比如建立 smb 连接,或者 IPC 连接等。...但是,如果使用 smb 进行身份验证后,建立了有效的连接,此时就可以访问指定管道进行数据交互。这里回显找不到指定文件是由于远程计算机脚本的原因,虽然报错,但是在远程端确实检测到有数据输入。 ? ?...那么,在设置 2008 匿名访问,或提供有效的身份验证后,就可以执行成功。 ? c、连接测试工具 这类工具有很多,一下是通过网上随意找的一个小测试工具,有兴趣的话可以自己试验一下。
配置Winlogbeat 首先确保“本地安全策略”中设置了对登录“成功”和“失败”、对账户管理“成功”和“失败”事件进行审核,这样对应的事件才会被记录在“安全”事件日志中,成为我们审计事件的源。 ?...在Powershell中设置注册表 Powershell中也能完整上述类似效果。...使用 Microsoft IE/EDGE 进行验证时,会提示“是否保存密码”,如果选择存储,再次验证时,则会自动登录。...Web 应用程序的HTML中选择类型为password的输入字段 使用一个函数绑定到onkeypress事件,该函数在用户登录到目标应用程序时,捕获用户在密码字段中输入的按键 处于演示的目的,该函数讲捕获的按键打印到浏览器的控制台...该函数将捕获的密码存储的浏览器的本地存储pw字段中。 ? 如果目标在捕获密码之前关闭针对的WEB应用程序选项卡,则 Hooking将被清除,Hooking 需要在此重复操作。
为什么 JavaScript 可以在浏览器中被执行 不同的浏览器使用不同的 JavaScript 解析引擎 Chrome 浏览器 => V8 Firefox 浏览器 => OdinMonkey...为什么 JavaScript 可以操作 DOM 和 BOM 每个浏览器都内置了 DOM、BOM 这样的 API 函数,因此,浏览器中的 JavaScript 才可以调用它们 浏览器中的 JavaScript...powershell窗口 在powershell中的快捷键: ⬆,可以快速定位到上一次执行的命令。.../files/1.txt', 'utf8', function(err, dataStr) { // 2.1 打印失败的结果 // 如果读取成功,则 err 的值为 null // 如果读取失败.../files/3.txt', 'ok123', function(err) { // 2.1 如果文件写入成功,则 err 的值等于 null // 2.2 如果文件写入失败,则 err 的值等于一个
如果最后一个操作成功,则包含 TRUE,失败则包含 FALSE。 $_ 包含管道对象中的当前对象。在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。...在函数的 Process 块中,$Input 变量包含当前位于管道中的对 象。在 Process 块完成后,$Input 的值为 NULL。...$NULL 包含 NULL 或空值。可以在命令和脚本中使用此变量表示 NULL,而不是使用字符串”NULL”。 如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为 TRUE。...Powershell支持四个作用域:全局、当前、私有和脚本。有了这些作用域就可以限制变量的可见性了,尤其是在函数和脚本中。...设置单个变量的作用域 $global 全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也任然有效。
如果最后一个操作成功,则包含 TRUE,失败则包含 FALSE。 $^ : 包含会话所收到的最后一行中的第一个令牌。 $_ : 包含管道对象中的当前对象。...在函数的 Process 块中,$Input 变量包含当前位于管道中的对象。在 Process 块完成后,$Input 的值为 NULL。...$NULL: 包含 NULL 或空值。可以在命令和脚本中使用此变量表示 NULL,而不是使用字符串”NULL”。 如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为 TRUE。...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。...#参数=${C:/Powershell/ping.bat} 5.变量作用域 描述: PS所有的变量都有一个决定变量是否可用的作用域,有了作用域就可以限制变量的可见性了,尤其是在函数和脚本中。
接口被定义为“在对象上实现的一组语义上相关的功能”,其实质是一组函数指针表,每个指针必须初始化指向某个具体的函数体,一个组件对象实现的接口数量没有限制。...利用这个接口,客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求 COM提供了一套允许在同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95及之后版本的操作系统中)。...DCOM使用远程过程调用(RPC)技术将组件对象模型(COM)的功能扩展到本地计算机之外,因此,在远程系统上托管COM服务器端的软件(通常在DLL或exe中)可以通过RPC向客户端公开其方法 攻击者在进行横向移动时...启用基于主机的防火墙可以阻止RPC/DCOM交互及实例化操作; 4、监控文件系统(以及注册表),关注新引入的元素以及改动; 5、监控环境中可疑的PowerShell操作。...如有可能,请强制启用PowerShell的“Constrained Language Mode(约束语言模式)”(这对特权账户来说可能有点难); 6、在DCOM调用“失败”时,目标主机上的System日志中会生成
当用户登录时,系统通过将其与存储在安全数据库中的信息进行比较来验证用户的密码。当用户的凭据通过身份验证时,系统会生成访问令牌。代表此用户执行的每个进程都有此访问令牌的副本。...以另一种方式,它包含您的身份并说明您可以在系统上使用和不能使用的内容。在不深入研究 Windows 身份验证的情况下,访问令牌引用登录会话,这是用户登录 Windows 时创建的。...image.png image.png 所以我们看到,即使通过 WMI,尽管 wmic.exe 能够通过 Powershell 在目标上运行命令,但仍会创建命名管道,那么为什么首先要创建命名管道呢...SMB 上构建 XML 将失败。...,"\\192.168.10.131\webdav\build.xml","7") 这通过不需要任何身份验证来访问 WebDAV 服务器(在本例中也是 C2 服务器)解决了双跳问题。
令牌中的信息包括与进程或线程关联的用户帐户的标识和特权。当用户登录时,系统通过将用户密码与安全数据库中存储的信息进行比较来验证用户密码。验证用户的凭证后,系统将生成访问令牌。...换句话说,它包含您的身份并说明您可以在系统上使用或不能使用的功能。在不深入研究Windows身份验证的情况下,访问令牌会参考登录会话,这是用户登录Windows时创建的登录会话。...因此,我们看到即使通过WMI,尽管wmic.exe能够通过PowerShell在目标上运行命令,但仍创建了命名管道,那么为什么要首先创建命名管道呢?...由于凭据没有发送到远程主机,因此远程主机无法向有效负载托管服务器进行身份验证。在Cobalt Strike中,使用wmic时通常会遇到这种情况,解决方法是为该用户创建令牌,因此可以从该主机传递凭据。...,"\\192.168.10.131\webdav\build.xml","7") 通过不需要任何身份验证即可访问WebDAV服务器(在本例中也是C2服务器),从而解决了双跳问题。
powershell2.0(amsi是从win10、2016开始存在的),但是由于很多服务需要低版本的powershell,所以在红蓝对抗中也会碰到装有powershell2.0 的机器。...通过分析我们可以在AmsiInitialize、AmsiOpenSession、AmsiScanBuffer这3个函数中patch(补丁)都可以达到bypass amsi的效果...., (LPSTR)"powershell -NoExit dir", NULL, NULL, NULL, NULL, NULL, NULL, &si, &pi); HMODULE hAmsi...非主流对抗 1.劫持amsi.dll 原理 由于研发人员使用 LoadLibrary函数导入dll的时候没有使用绝对路径,因此程序会首先在当前目录下寻找dll 因此我们在 powershell.exe同目录下放一个...而这个函数会先从注册表HKCU中找对应的dll去解析,也就是当前用户,因此我们创建相应的注册表,让它调用失败就行了。简单来说利用的是注册表优先级来绕过。
整个漏洞利用的核心在于 Windows 在本地身份验证和网络身份验证过程中尝试的令牌存在一些差异,网络身份验证生成不受限的令牌,而我们可以通过某种方法在验证时强制指定使用数据报式身份验证(数据报上下文)...图9 逆向 MSV1_0.dll 进入这个判断之前,函数会先检查协商标志的内容,除了在新Windows版本中始终为 True 的 NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED...图17 模拟命名管道文档介绍 通过查看 ImpersonateNamedPipeClient 函数原型可以知道,命名管道服务器线程要成功调用 ImpersonateNamedPipeClient 函数需要满足四个条件中的任意一个...图18 模拟的要求 图19 Network Service权限列表 此处利用的重点在于,在本地环回身份验证中,Lsass 将保存会话的令牌而不是调用者的令牌。...图20 查询Rpcss服务的Pid 图21 Rpcss服务相关句柄 在开始验证之前,我们需要先取得一个 Network Service 的 PowerShell 环境。
PowerShell PowerShell 包含可以查询 WMI 对象并将信息检索回控制台的 cmdlet。以下命令可用于验证是否已创建任意事件以及恶意负载/命令是否存储在 WMI 存储库中。...从 PowerShell 控制台执行以下命令将验证有效负载是否存储在“ __EventConsumer** ”中并且“ **__EventFilter ”已创建。...smbclient ////10.0.0.2//C$ -U pentestlab password 在 vanilla Windows 10 版本中,系统会记录登录/注销期间的成功和失败尝试。...以下模块可以在特定的每日时间、登录失败期间和启动时 5 分钟内执行有效负载。...“ wmi_updater ” 模块能够从远程位置获取有效负载,而不是将其存储在 WMI 存储库中。它将注册为“ AutoUpdater ”,并且可以在启动时或一天中的特定时间设置触发器。
如果最后一个操作成功,则包含 TRUE,失败则包含 FALSE。 $^ : 包含会话所收到的最后一行中的第一个令牌。 $_ : 包含管道对象中的当前对象。...在函数的 Process 块中,$Input 变量包含当前位于管道中的对象。在 Process 块完成后,$Input 的值为 NULL。...在 Windows PowerShell 调试程序中到达断点时,Windows PowerShell 也会出现嵌套命令提示符。...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。...#参数=${C:/Powershell/ping.bat} 5.变量作用域 描述:PS所有的变量都有一个决定变量是否可用的作用域,有了作用域就可以限制变量的可见性了,尤其是在函数和脚本中。
在Windows操作系统中,管理用户账户和密码策略是确保系统安全的关键步骤。...查看和设置密码策略 在Windows中,密码策略可以确保用户账户的密码强度和安全性。这些策略包括密码长度、复杂性要求以及密码更换周期等。...域密码策略:在域环境中,可以通过组策略(Group Policy)管理控制台gpmc.msc设置密码策略,这些策略将适用于所有域用户。...解锁和管理用户账户 用户账户可能因多次登录失败而被锁定。...为了进一步提高操作的安全性和准确性,建议在生产环境中进行适当的测试和验证。
这个过程我们在IDA中可以看出,从图中 我们可以看到COM服务接口ID(IID)和ClassID(CLSID)传递给CoCreateInstance(): 甚至,我们可以通过查看ProcMon来验证这一点...AmsiCloseSession之类的函数。在这个过程中如果我们强制COM实例化失败,那么AMSI将无法调用用来扫描恶意程序内容所需的函数方法。...这将导致其加载失败,并阻止任何扫描恶意软件的方法被访问,最终使得AMSI不可使用。...由于这个原因,我们可以将PowerShell.exe复制到我们可以写入的目录,并 将易受攻击的amsi.dll版本放到这个目录中。...关于防御方法,我们觉得对那些在正常目录之外执行任何的二进制文件(wscript,cscript,PowerShell)操作进行监视操作将是一个好的想法。
答:白加黑就是通过DLL劫持在应用程序的导出目录中通过创建一个DLL并通过LoadLibrary函数(或者找一个已有的DLL注入恶意代码)来加载DLL文件。...又因为某些原因Powershell无文件落地免杀在国内其实不太流行,因为360\天擎一旦发现Powershell运行一些敏感函数就会标记直接拦截,导致执行失败,但是它却可绕过火绒等杀软。.../Invoke-Obfuscation),我们可以使用Invoke-Obfuscation来混淆/加密恶意的PowerShell脚本,使得PowerShell脚本逃避杀软的检测,原理是代码是在解释器中执行的...第一步将涉及创建恶意PowerShell脚本并将其保存,沙箱检测如下所示: 创建并保存恶意PowerShell脚本后,打开混淆工具,我们可以通过在Invoke-Obfuscate提示符中运行以下命令来完成...ASMI免杀处理 为了做好Powershell的免杀,我们针对内存规避有着以下的手段: 专注于内存操作,不将文件写入磁盘 通过利用各种Windows API将有效负载注入进程 然后在存储器中的单独线程中执行有效载荷
为了验证上面我描述的一些内容,我建议WmiExplorer进行查看: ? 可以注意到前面描述中的Namespace、Class、Properties、Methods……。...MSDN有提到“wmic 中的 alias 是对 class 、property、method 的友好重命名”,你可以用 wmic alias qfe list brief 验证这一点: ?...这里代码太多,直接给了图片,整个脚本逻辑很清晰,只有3个函数Install-Persistence、RemovePersistence、Check-WMI,功能和函数名相同,实际使用时仅需要修改 $Payload...WMI Attacks – Stealthy Command “Push” ---- 上面例子中基本调用的是 powershell或cmd,在笔者其他篇中提到过ELK配合sysmon,查找这类攻击很容易...是出现4625事件,4625事件是登录失败( runas 输入错误账户密码即可导致该事件 ) * Empire 中 `persistence/elevated/wmi`,同样是 4625 事件触发,
注意 创建HTTPS侦听器时,需要创建一个现有证书并将其存储在LocalMachine\My证书存储中。如果此存储中没有证书,则大多数命令将失败。...HTTP 401 /凭据被拒绝 HTTP 401错误表示身份验证过程在初始连接期间失败。...无法加载内置模块 如果powershell失败并显示类似的错误消息, 则尝试访问环境变量指定的所有路径可能会出现问题。...当将SSH密钥身份验证与Ansible结合使用时,远程会话将无权访问用户的凭据,并且在尝试访问网络资源时将失败。这也称为双跳或凭据委派问题。...也可以看看 剧本简介 剧本介绍 技巧和窍门 剧本的提示和技巧 Windows模块列表 Windows特定的模块列表,全部在PowerShell中实现 用户邮件列表 有一个问题?
领取专属 10元无门槛券
手把手带您无忧上云