点我

SQL注入【联合注入-数字型】

概述

注入的本质

  • 用户输入的数据被当做代码执行

注入条件

  • 用户可以控制传参
  • 用户输入的语句被带入数据库并执行

显错注入原理

  • 用户输入的数据被当做SQL语句执行,并带入数据库执行
  • 对用户输入的数据没有做任何过滤,并且将结果返回到页面

显错注入所用函数

order by   -->对字段进行排序
group_concat()   -->将字符连接起来,输出字符串集合,逗号分开
limit start end    限制select的输出数量
database()   -->当前所用数据库名
version()   -->数据库版本号
user()   -->用户名


靶场Less-2

1、进入靶场
在这里插入图片描述

2 、将id=1处1改为2
在这里插入图片描述

3、轻松得知:该页面是通过id进行传参,通过改变id的值页面返回不同的内容

4、分别使用and 1=1 和and 1=2 进行探测
在这里插入图片描述
在这里插入图片描述

5、观察页面发生了变化,使用order by 判断字段数 [一般通过二分法判断]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、得知字段数为3,使用联合查询

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
多个 SELECT 语句会删除重复的数据

0 union select 1,2,3
观察回显点
在这里插入图片描述

7、回显点2,3,使用version()和database() 获得版本号和当前数据库的名称
在这里插入图片描述

8、得知MySQL版本号为5.0以上版本,所以可以使用MySQL自带数据库information_schema中的table和column表爆出数据

9、使用group_concat 爆出当前数据库下的所有表名
在这里插入图片描述

10、查询users表下的所有字段
在这里插入图片描述

11、查看user和password字段信息

第一种方法:使用limit 依次得出信息
在这里插入图片描述

在这里插入图片描述

第二种:使用group_concat()得出信息
在这里插入图片描述

后端代码

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

接收id变量的传参,将id的传参值带入数据库进行查询

  ‍

分类: WEB安全

评论

-- 评论已关闭 --

目录