sqllab 1-6 练习

前言

什么是sql注入?

攻击者通过构造不同的sql语句来实现对数据库的操作

两个关键 :参数用户可控 参数带入数据库查询

基本流程

判断注入点

判断字段数

判断回显点

查询相关内容  判断库名----> 判断表明---->判断列名----->判断数据

搭建

复制文件到 D:\phpstudy_pro\WWW

创建网站 设置根目录为该文件    注意 php版本需要为 5.4.45sqllab 1-6 练习_第1张图片

sqllab 1-6 练习_第2张图片

至此 搭建完成

less-1  GET - Error based - Single quotes - String

1.判断注入点

sqllab 1-6 练习_第3张图片

显示正常 说明1=2没有被执行

尝试加引号进行闭合

sqllab 1-6 练习_第4张图片

成功     查看源码  果然是被加了引号

sqllab 1-6 练习_第5张图片

所以引号处存在sql注入

2.判断字段数

使用 order by 1 2 3.....尝试

sqllab 1-6 练习_第6张图片

4的时候不存在   所以 字段数为3

sqllab 1-6 练习_第7张图片

 3.判断回显点

使用联合查询   因为字段数为3   所以 union select 1,2,3

sqllab 1-6 练习_第8张图片

为什么没有显示出回显点呢???

因为此时 显示id=1时的界面    可以将id改为不存在的数或一个大点的数字

sqllab 1-6 练习_第9张图片

可以看到  回显点2 3

4.查询相关内容

查询数据库    使用database()

sqllab 1-6 练习_第10张图片

查询表名    1.使用limit逐个查询  

sqllab 1-6 练习_第11张图片

sqllab 1-6 练习_第12张图片

sqllab 1-6 练习_第13张图片

2.使用group_concat  但如果表名过多可能会显示不完整

sqllab 1-6 练习_第14张图片

查列名

在各个表中查询列名

sqllab 1-6 练习_第15张图片

在名为 users的表中 查到了  password 列

sqllab 1-6 练习_第16张图片

查数据

用group_concat()分别查询id对应的username和password

sqllab 1-6 练习_第17张图片

 

2.less-2 GET - Error based - Intiger based  

1.判断注入点

sqllab 1-6 练习_第18张图片

可以看到 1=2 直接被执行了

2.判断字段数

sqllab 1-6 练习_第19张图片

3.判断回显点

sqllab 1-6 练习_第20张图片

4.查询数据

库名

sqllab 1-6 练习_第21张图片

表名

sqllab 1-6 练习_第22张图片

列名

sqllab 1-6 练习_第23张图片

数据

sqllab 1-6 练习_第24张图片

less-3 GET - Error based - Single quotes with twist string

1.判断注入点

sqllab 1-6 练习_第25张图片

排列组合尝试 并查看源码

sqllab 1-6 练习_第26张图片

2.判断字段数

sqllab 1-6 练习_第27张图片

3.判断回显点

sqllab 1-6 练习_第28张图片

4.判断数据

库名.表名.列名同前二题

sqllab 1-6 练习_第29张图片

sqllab 1-6 练习_第30张图片

sqllab 1-6 练习_第31张图片

查询数据

sqllab 1-6 练习_第32张图片

less-4 GET - Error based - Single quotes with twist string

1.判断注入点

结合源码分析

sqllab 1-6 练习_第33张图片

sqllab 1-6 练习_第34张图片

2.判断字段数

sqllab 1-6 练习_第35张图片

3.判断回显点

sqllab 1-6 练习_第36张图片

4.查询

sqllab 1-6 练习_第37张图片

sqllab 1-6 练习_第38张图片

sqllab 1-6 练习_第39张图片

less-5

1.判断注入点

加引号闭合

sqllab 1-6 练习_第40张图片

2.判断字段数

字段数为3

sqllab 1-6 练习_第41张图片

3.判断回显点

sqllab 1-6 练习_第42张图片

发现没有回显点  需要使用盲注

盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注和报错的盲注。

布尔型:页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据

时间型:通过页面沉睡时间判断

通过 sleep()函数测试,通过if()和sleep()联合逐个猜解数据

如果当前查询的当前数据库ascii(substr(database()),1,1)的第一个字符的ASCII码大于100,ture 沉睡10秒,FALSE 沉睡4秒
原文链接:https://blog.csdn.net/weixin_40709439/article/details/81355856

报错型:  没有正常的输出位,需要的数据通过报错进行输出显示

sqllab 1-6 练习_第43张图片

sqllab 1-6 练习_第44张图片

4.查询数据

库名 ?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),%20%20--%20app

sqllab 1-6 练习_第45张图片

表名

http://localhost:8001/Less-5/?id=1%20%27and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_
schema.tables%20where%20table_schema=%27security%27),0x7e),1)%20--+

sqllab 1-6 练习_第46张图片

列名

sqllab 1-6 练习_第47张图片

数据

使用group——concat 发现回显不够   用limit

sqllab 1-6 练习_第48张图片

 

less-6  GET - Double Injection - Double Quotes - String

1.判断注入点 比上一道题加个"

2.判断字段数 同上

3.用盲注查询

sqllab 1-6 练习_第49张图片

sqllab 1-6 练习_第50张图片

sqllab 1-6 练习_第51张图片 

sqllab 1-6 练习_第52张图片 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(sql,安全,数据库)