SQLI-LABS(Less-1)

Less-1(GET-Error-Single quotes-String)

SQLI-LABS(Less-1)
打开Less-1页面,可以看到页面中间有一句 Please input the ID as parameter with numeric value,那么先使用 ID这个参数通过 GET方式传入一个数值。
SQLI-LABS(Less-1)

确定注入点

通过传入 id=1看到页面上查询结果是有回显的,接着尝试一下 ?id=1'

SQLI-LABS(Less-1)
可以看到页面报错了,说明 id=1'导致SQL语句产生了歧义。通过报错信息可以看出闭合SQL语句时用的是单引号。

关于在 HTTP 请求中的注释问题:

  • 在浏览器的 GET请求中,URL中 #号是用来指导浏览器动作的(例如锚点),对服务器端无用。所以, HTTP请求中不包括 #,因此使用 #闭合无法注释,会报错。
  • 而使用 --,在传输过程中空格会被忽略,同样导致无法注释。
  • 所以在 GET请求传参注入时可以使用 --+的方式来闭合,因为 +会被解释成空格。
  • 除此之外,可以使用 %23代替 #,使用 --%20代替 --+

这里使用 ?id=1' --+进行闭合注释。

SQLI-LABS(Less-1)

接着使用注入语句 ?id=1' and 1=1 --+?id=1' and 1=2 --+,发现注入第一条语句时正常回显,注入第二条语句时没有回显,由此判断存在注入点。

SQLI-LABS(Less-1)

判断数据表列数

接下来通过 order by判断该表的字段数量( order by语句用于根据指定的列对结果集进行排序),URL后面拼接 ?id=1' order by 1--+看是否报错:
注入语句: ?id=1' order by 1 --+

SQLI-LABS(Less-1)
接着继续尝试 ?id=1' order by 2--+?id=1' order by 3--+,当尝试到4时,发现页面报错了,说明该表依据第4列进行排序时,发生了错误,表明该表只有3列。
SQLI-LABS(Less-1)

确定回显字段

接着使用联合查询,看看是哪几列会回显到前端页面:
注入语句: ?id=1' and 1=2 union select 1,2,3 --+

SQLI-LABS(Less-1)
这里使用 and 1=2是为了让 union之前的语句为假,从而不回显在前端页面,而 union结果集中的列名总是等于 union中第一个 select语句中的列名,这样就可以通过前端页面的回显知道前端页面显示的数据表的第几列。

确定当前数据库名和用户

从上图中可以看出该数据表的第二列和第三列会回显在前端页面上,这样就可以通过数据库自带的函数: user()(查看当前用户)、 database()(查看当前数据库)、 version()(查看数据库版本)等替换2和3,注入得出连接数据库用户以及数据库名称。
注入语句: ?id=1' and 1=2 union select 1,database(),user() --+

SQLI-LABS(Less-1)
通过上述注入可以得知,当前数据库名为 security,当前用户为 root,接着找出这个数据库中的所有数据表。

确定当前数据库内表名

关于 information_schema 库:

  • information_schema库用于存储数据库的元数据,例如 information_schema库中的 schemata表存储了数据库中所有的库信息、 tables表存储数据库中的表信息,包括表属于哪个数据库,表的类型、存储引擎等信息、 columns表存储表中的列信息,比如表有多少列、每个列的类型等

接着爆出当前库中的所有表名,通过 group_concat将相同分组中的结果进行连接:
注入语句: ?id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

SQLI-LABS(Less-1)
通过上述注入可以得知当前数据库中存在 emailsreferersuagentsusers四张数据表。

确定users表中列名

注入语句: ?id=1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() --+

SQLI-LABS(Less-1)
通过上述注入可以得知 users表中存在三列,分别为 idusernamepassword

确定users表中的用户名和密码

注入语句: ?id=1' and 1=2 union select 1,group_concat(username),group_concat(password) from users --+

SQLI-LABS(Less-1)

到此,就得到了当前表中所有的用户名和密码。

Original: https://www.cnblogs.com/Timesi/p/16655744.html
Author: 顾北清
Title: SQLI-LABS(Less-1)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578221/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python获取Windows硬件特征信息

    1.python pip安装WMI 并用pyinstaller编译出device_chk.exe 参考内容:https://blog.csdn.net/fengmm521/arti…

    Linux 2023年6月7日
    095
  • (读书笔记)基于CMMI的软件工程及实训指导 第13-16章

    一、软件测试 软件测试是为了发现程序中的错误而执行的过程。测试只能证明软件有错,而不能保证软件程序没错。 1. 软件版本 Alpha版 公司内测版本 Beta版 对外公测版本 发布…

    Linux 2023年6月14日
    088
  • 实验

    编写程序实现以下功能 编写程序,打印99乘法表 将一面额为10元倍数的整钱( 输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。 输入输出示例 Input …

    Linux 2023年6月7日
    0100
  • shell中参数的用法 && wait的用法

    转载自https://www.jianshu.com/p/4db526ff6560 参数 说明 $0 当前脚本的文件名(间接运行时还包括绝对路径) $n 传递给脚本或函数的参数。n…

    Linux 2023年5月28日
    094
  • 手把手教你在Linux系统下安装MySQL

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1. 下载并安装MySQ…

    Linux 2023年6月14日
    0105
  • WEB自动化-05-Cypress-元素交互

    5 元素交互 元素识别和操作是UI自动化测试的基础,下面一起来学习一下在Cypress中的元素交互操作吧。 5.1 元素定位器选择 每一个测试用例都包含对元素的定位识别和操作等。因…

    Linux 2023年6月7日
    0103
  • shell 获取进程号

    Shell最后运行的后台PID(后台运行的最后一个进程的进程ID号) $! Shell本身的PID(即脚本运行的当前进程ID号 $$ Original: https://www.c…

    Linux 2023年5月28日
    095
  • python3安装pyhook3遇到的问题

    一、 解决办法:安装好:使用C++的桌面开发即可完成。 打开官方网址:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft….

    Linux 2023年6月13日
    0108
  • jarwarSpringBoot加载包内外资源的方式,告别FileNotFoundException吧

    工作中常常会用到文件加载,然后又经常忘记,印象不深,没有系统性研究过,从最初的war包项目到现在的springboot项目,从加载外部文件到加载自身jar包内文件,也发生了许多变化…

    Linux 2023年6月6日
    0111
  • redis实战

    转载于:https://blog.csdn.net/piaoslowly/article/details/81563579 redis简介 Redis 是一个开源的 使用 ANSI…

    Linux 2023年5月28日
    0100
  • 高速USB转8串口产品设计-RS232串口

    基于480Mbps 高速USB转8路串口芯片CH348,可以为各类主机扩展出8个独立的串口。使用厂商提供的VCP串口驱动程序,可支持Windows、Linux、Android、ma…

    Linux 2023年6月7日
    096
  • Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    在linux下一般用scp这个命令来通过ssh传输文件。 1、从服务器上下载文件 scp username@servername:/path/filename /var/www/l…

    Linux 2023年6月13日
    0116
  • 我最鄙视的程序员

    今天在技术群里看到关于优秀程序员特质的话题,让我想起多年前的一个同事,一个我最鄙视的程序员。 他的名字叫李伟(化名),是入职没多久的员工,我所在的开发二组和他在的一组,以前没有过工…

    Linux 2023年6月6日
    093
  • zabbix监控配置流程

    1.0 zabbix监控配置流程详细 管理角度: 开发 由开发人员提供监控指标来监控 运营 让其找开发要监控指标 运维 直接加 配置角度: 创建主机 创建主机组并加入主机 添加监控…

    Linux 2023年6月7日
    093
  • 0. 西门子 WinCC 组态软件 — 概述

    西门子 WinCC 组态软件 — 概述 1.西门子WinCC各产品线及定位 WinCC是由SIEMENS(西门子)公司开发的SCADA(数据采集与监控)系统,能高效控制…

    Linux 2023年6月7日
    093
  • docker:nginx+confd动态生成配置

    docker:nginx+confd动态生成配置当我们项目越来越多时手动去服务器修改nginx配置是一件很麻烦而且可能出错的事情。我们可以通过 nginx+confd+&#…

    Linux 2023年6月13日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球