SQL注入—基础知识总结

  • 1、注释符
    • 1.1、Mysql中注释符有三种
    • 1.2、总结
  • 2、information_schema库
    • 2.1、了解information_schema库
    • 2.2、常用注入语句
  • 3、order by
    • 3.1、了解order by
    • 3.2、order by之判断列数
  • 4、union select
    • 4.1、了解union select

1、注释符

SQL注入的时候经常会用到注释符注释掉SQL语句后边的拼接内容,在字符型参数注入中常见。

1.1、Mysql中注释符有三种


(1) 注释符:- -
– 在mysql中使用时有时会出错。原因是 - - 后面的空格在URL中最后会被忽略,导致- -与后面的语句连接在一起,无法形成有效的mysql语句。在使用时将空格替换成 + ,即- -+
就可以了。在注入时除了- -+外,- -‘也可以完成注入语句。

(2) 注释符:#
#比较少用,很多情况使用会出错。原因是 # 不能被浏览器识别进行URL编码,数据传输过程中不会把它一起带入后端,转换成URL编码%23就可以使用了。

(url中 # 号是用来指导浏览器动作的(例如锚点),对服务器端完全无用,所以HTTP请求中不包括 #

(3) 注释符: /**/
因为注释符#、-- 都是把后面的语句全部注释掉了,而内联注释则是注释指定部分,需要一前一后闭合,所以在传参那里几乎不做注释语句用,而是用于过滤空格等bypass。

?id=-1'/**/union/**/select/**/1,2,database()--+

过滤空格,用/**/代替空格

(4) 注释符:payload结尾单引号闭合

http://localhost/sqlilabs/Less-1/?id=-1’ union select 1,2,database()’

1.2、总结

GET提交方式:

  1. –(--后面有空格)
  2. %23
  3. payload结尾单引号闭合

POST提交方式:

  1. –(--后面有空格)
  2. #(POST提交的数据,不用进行url编码,是POST原文)
  3. payload结尾单引号闭合

2、information_schema库

2.1、了解information_schema库

information_schema可以看作是数据库,保存了Mysql服务器所有数据库的信息。

information_schema库保存了Mysql服务器所有数据库的信息。如数据库名、数据库的表与访问权限等。简单点说,Mysql服务器上,到底有哪些数据库,各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么访问权限才能访问,等等信息都保存在information_schema这张表中。

mysql的information_schema数据库包含了一些表和视图,提供了访问数据库元数据的方式。

元数据,是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括 “数据词典” 和 “系统目录”。

下面列举一些重要的数据字典表:

(1)SCHEMATA表:提供了关于数据库的信息,show database的结果取自这里
(2)TABLES表:提供了关于数据库中表的信息
(3)COLUMNS表:提供了表中列的信息

2.2、常用注入语句

查询所有数据库名
select group_concat(schema_name) from information_schema.schemata

查询test库中的所有表名
select group_concat(table_name) from information_schema.tables where table_schema=‘test’

查询users表中的所有列名
select group_concat(column_name) from information_schema.columns where table_name=‘users’

查询表中的内容
select group_concat(username,password) from test.users

3、order by

3.1、了解order by

order by 是mysql中对查询数据进行排序的方法,使用示例:

select * from 表名 order by 列名(或数字)asc;升序(默认)
select * from 表名 order by 列名(或数字)desc;降序

这里的重点在于order by后既可以填列名或数字。举个例子,id是user表中第一列的列名,如果根据id来进行排序,有两种写法:

select * from user order by id;
select * from user order by 1;

3.2、order by之判断列数

sql注入时,常用下面的语句来判断列数:

id=1’ order by 3- -+
id=1’ order by 4- -+
当第一条语句正常回显,第二条语句报错时,就可以判断表有三列。(当排序超出了范围就会报错)

这里的order by判断列数,实际是猜测查询出的列数,而不是表实际的列数。order by本来就是对查询的结果进行排序,针对的就是查询结果而不是原表。所以order by猜解得到的列数还跟后端的逻辑有关。

在sql注入时,将order by后面的数字增加直至报错,就可以判断列数。

4、union select

4.1、了解union select

union的作用是将两个select查询结果合并

如下图所示,union将两个select的查询结果合并在一起。

这里我们只想显示我们要查询的结果,即1,2,3。只有当第一个select结果是空集时,页面才会只显示第二个select查询的结果。 所以,我们这里将id置为-1,即第一个select结果为空集。页面就只会显示第二个select查询的结果。

MySQL中UNIOIN规则

  1. UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔
  2. UNION中的每个查询必须包含相同的列
  3. UNION会从查询结果集中自动去除了重复行
  4. 只有最后一个SELECT语句可以使用INTO OUTFILE,当然,全部UNION的结果会写到文件中去。

UNION注入的流程

  1. 首先判断是否存在注入点及注入的类型。
  2. 观察回显的位置。
  3. 使用order by查询列数。
  4. 获取数据库名。
  5. 获取数据库中的所有表名。
  6. 获取数据库的表中的所有字段名。
  7. 获取字段中的数据。

常使用下列语句来探测数据库信息:

url?id=-1 union select 1,database(),3- -+

常见查询函数

version() — 数据库版本
user() — 数据库用户
database() — 当前所在数据库
current_user() — 当前用户名
system_user() —系统用户名
session_user() — 连接到数据库的用户名
@@basedir — 数据库的安装位置
@@datadir — 数据库文件存放目录

SQL注入基础知识总结相关推荐

  1. SQL注入 基础概述及相关知识

    SQL注入 基础概述及相关知识 SQL注入概述 SQL注入攻击简介 SQL注入攻击原理 SQL注入攻击来源 SQL注入攻击主要特点 SQL注入攻击危害 SQL注入攻击 SQL注入攻击基础概述 SQL注 ...

  2. 渗透测试之SQL注入基础

    渗透测试之SQL注入基础 SQL注入类型 按照数据类型类型来分类 按照执行效果来分类(页面回显效果) 按照数据提交的方式来分类 判断注入类型的方法 MySQL注入基础 联合查询注入 布尔注入 时间盲注 ...

  3. SQL数据库基础知识-巩固篇一

    SQL数据库基础知识-巩固篇<一>... 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了> MySQL-57 D ...

  4. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  5. SQL注入基础原理与案例(详细总结)

    SQL注入基础原理与案例 一.前言 二.漏洞概述及危害 1.漏洞概述 2.漏洞危害 3.漏洞防范 三.SQL注入 1.SQL注入方式 (1)信息收集 (2)数据注入 (3)高权限注入 2.判断是否存在 ...

  6. 学一点SQL注入基础

    文章目录 学一点SQL注入基础 思维导图 注入原理 MySQL三种注释 MySQL三种注入方式 联合查询注入 确定字段数 常规步骤 sqlmap的使用 跨库注入 MySQL注入获取最高权限-文件操作 ...

  7. SQL注入基础--判断闭合形式

    这里写自定义目录标题 ** **SQL注入基础--判断闭合形式** ## 1.整形闭合 2.单引号闭合 3.双引号闭合 总结 ** SQL注入基础–判断闭合形式 SQL语句的闭合形式大概如下几种: S ...

  8. sql注入基础原理(SQL injection)

    sql注入基础原理 文章目录 sql注入基础原理 Sql注入简介 案例表 产生sql注入的写法 python 相关 java 相关 php 相关 sql注入相关技术 B: 基于布尔的盲注特征 案例 总 ...

  9. SQL数据库基础知识巩固

    SQL数据库基础知识 数据库,又称"电子化的文件柜",是"按照数据结构来组织.存储和管理数据的仓库",是一个长期存储在计算机内的.有组织的.可共享的.统一管理的 ...

最新文章

  1. 【FI 收付款条件】Payment Terms 收付款条件
  2. VTK:IO之ReadPDB
  3. 如何修复 SAP UI5 aggregation with cardinality 0..1 相关的错误消息
  4. 工作200:视频上传和图片编辑功能
  5. linux nginx F配置,linux下nginx的安装及配置
  6. 如果你是程序员 别说你没有用过这五大编程工具
  7. 跟着大彬读源码 - Redis 1 - 启动服务,程序都干了什么?
  8. SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升
  9. docker daemon配置阿里云加速器
  10. IT大咖总结的面试真经
  11. 金庸:为什么历史上没有一个国家能成功吞并中国?
  12. 世界主要粮食作物和经济作物的生产及其分布
  13. 初秋西安,终南山Linux内核问道之旅
  14. Vue进阶(四十四):vue 图片加载完成事件
  15. 冯东阳:5000元葬送了我的行业网站之梦
  16. 学渣的刷题之旅 leetcode刷题 66. 加一
  17. san mysql,高性能MySQL :应该用SAN吗?
  18. matlab学习之蒙特卡罗 --渡口模型和赶火车问题(matlab编程)-----数模
  19. 【网络安全】文件上传漏洞及中国蚁剑安装
  20. 彩灯控制器课程设计vhdl_VHDL花样彩灯控制器的设计

热门文章

  1. 正宗佛祖注释-原装正版
  2. 【Java】实测激活JRebel实现代码的热部署
  3. IT人读《论语》:1.1理解和感悟
  4. 蚂蚁金服的相关资料收集
  5. 独家 | 朝智能化发展的长租房市场,能否解决租房痛点?
  6. STM32F103 硬件SPI驱动外部FLASH W25X16
  7. 形变块匹配跟踪(1):配准跟踪与几何约束_bg
  8. [转]设置桌面图标文字透明
  9. 图解脏读、幻读、不可重复读
  10. 不明原因儿童急性肝炎与新冠有关?!柳叶刀子刊最新研究激起千层浪