MySQL基础
不论是在使用kali的工具,还是web漏洞中,数据库的使用都会有所涉及。因此我们先来从较常用MySQL入手。同样对于许多人来说,在网上常看到回显位,以及一些用语不知道是什么
MySQL的结构
首先我们要对MySQL是如何存储数据有一个简单的认识,在MySQL中数据是一张一张的表单
1 | 在MySQL中存在多个数据库,在每个数据库中又存在多张表,每张表就对 |
MySQL的简单使用
要学习sql注入,对语法的了解肯定少不了,这里我们简单演示一下如何创建一张表单。(要了解更多可以去学习一下MySQL),
1 | mysql> show databases; //查看表单 |
MySQL注入原理
在网站中数据是分开单独储存的,因此在查询数据时需要将sql语句传过去,而对于该sql语句进行恶意的拼接,从而查询到其他数据。
http://127.0.0.1/sqli-labs-master/Less-2/?id=1
对于这个url我们改变id的值能得到不同的值。
1 | 这里我们可以把它看作在数据库中执行了语句: |
MySQL注入的思路(包括回显位)
1 | 1.先通过order by猜解字段数(可以理解为列数): |
在这里你可能会问为什么要判断回显位,为什么要让id=-1?
首先回显位,你可以将表的每一列看成一个单独的,并不是每一列都可以通过外部语句操作的,判断回显位就相当于你在找哪些列是可以进行操作的,当你在不可以操作的列输入语句是不会得到结果的,因此得到的数字决定你的语句写的地方。
让id=-1是为了让前面这个语句不会输出结果,以免让你回显位无法得到,所以id=-2等其他的也可以
1 | 3.在回显位输入语句: |
简单的MySQL注入就如上,要想得到更多信息可以学习最后MySQL注入攻击中的手段
一般注入获取信息的顺序为数据库名字–>表名字–>列名字–>所有数据
对于注入中的“ ‘ ”以及#,–的理解
对于许多小白来说,有的语句中加“ ‘ ”,有的加“ –”或“#”,这些看着云里雾里的,不知道为什么?其实这是因为我们的传值并不是直接在MySQL中执行,而是要经过php的拼接
1 | 在php中定义了一个语句: |
MySQL注入攻击
了解完sql注入的原理了,还是不够的,对于实际中的注入,还需要去了解下面四种手段:
布尔盲注
时间盲注
联合查询
基于错误信息注入