SQL注入常见方式

这篇具有很好参考价值的文章主要介绍了SQL注入常见方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数字型注入

许多网页都有如下的网址

ww.xxx.com/xxx?id=1

注入点 id 类型为数字,在大多数的网页中,例如查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。

这一类的 SQL 语句原型大概为 select * from 表名 where id=1

若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1,就能查询到关于这张表的全部信息,也就是猜解数据库

字符型注入

针对的是如下类型的网址

www.xxx.com/xxx?username=admin

可以采用:

  • 传入【username=admin' --】或者【username=admin' #】

在实际执行的sql语句中,可能就变成了

SELECT * FROM users WHERE user='admin' -- ' AND password='password'

【--】在数据库中会被解析为注释,实际上执行的是

SELECT * FROM users WHERE user='admin'

又或者,猜解其他内容,如

输入【admin' order by 1#】

实际执行的sql语句可能就会变成

ELECT * FROM users WHERE user='admin' order by 1#`;

在继续输入【admin‘ order by 2#】,以此类推,就可以知道这个users表中有多少列数据

再继续使用联合查询来获取信息,也就是 union select ,再配合一些函数,就会有效果,首先我们需要知道一共有多少列,因为union在查询的时候需要和主查询的列数相同,以两列为例:

我们可以输入【admin' union select database(),user()#】

database() :将会返回当前查询所使用的数据库名字

user() :会返回执行当前查询的用户名

那么实际执行的sql语句可能是:

SELECT first_name, second_name FROM users WHERE user='admin' union select database(),user()#`;

可以再继续输入【admin’ union select version(),@@version_compile_os#】

  • version() :获取当前数据库版本

  • @@version_compile_os :获取当前操作系统

同理的函数还有

  • @@datadir:返回MySQL数据目录的位置

  • @@basedir:返回MySQL安装目录

  • @@innodb_version:返回InnoDB存储引擎的版本号(如果已启用)

  • @@character_set_server和@@collation_server:分别返回服务器的默认字符集和排序规则

搜索型注入

这种注入方式是基于 LIKE 语句进行模糊匹配的查询,例如在一个简单的搜索功能里面,URL可能是:

www.xxx.com/xxx?keyword=【搜索关键字】

那么原始SQL语句可能是

ELECT * FROM xxx WHERE xxx LIKE '%原始搜索关键词%';

首先可以判断是否存在注入,例如修改url,如果页面异常或者报错,则可能存在注入漏洞

ww.xxx.com/xxx?keyword='

再按照上个标题中讲述的方法,进行数据拼接来获得数据

或者是通过表单来提交的,也可以通过这种方式来进行sql注入,上述讲的基本都是GET注入或者POST注入,下文会讲HTTP头部注入


HTTP头部注入

首先,可以了解一下HTTP头部的组成:HTTP详解(请求体,请求体,响应头,响应体) - Teamshare | 天书

SQL注入常见方式,# 测试基础知识,sql

Cookie注入

  • Cookie通常用于存储会话ID或其他用户身份识别信息

  • 如果服务器端在执行SQL查询时错误地将未经充分过滤的Cookie内容作为查询参数,就可能导致注入

  • 例如,如果一个网站仅仅将Cookie中的user_id值作为SQL查询的一部分,如 SELECT * FROM users WHERE id = $_COOKIE['user_id'],攻击者可以修改其Cookie值为类似于 'admin' OR '1'='1' 的形式,从而绕过身份验证或获取未经授权的信息

User-Agent注入

  • User-Agent字段被用来标识客户端浏览器的类型、版本以及其他相关信息

  • User-Agent注入的本质也是如果服务端使用了这个字段,并且没有加以过滤或处理,就可能导致注入

  • 例如,如果服务器使用类似 SELECT * FROM users WHERE user_agent = $_SERVER['HTTP_USER_AGENT'] 的查询,攻击者可能会设置一个包含注入内容的User-Agent字符串,如 'Mozilla/5.0 (compatible; SQLInjection; Windows NT 6.1)' UNION SELECT username, password FROM admin_table --,就可以尝试获取敏感数据

总结

  • SQL注入发生在应用将不受信任的用户数据直接嵌入到SQL查询字符串时,没有对这些数据进行充分的验证和转义

  • 攻击者通过构造特殊的输入内容,使得注入的SQL片段与原始查询语句结合后改变其原有意图文章来源地址https://www.toymoban.com/news/detail-821592.html

到了这里,关于SQL注入常见方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【新星计划2023】SQL SERVER (01) -- 基础知识

    1.1 Official Website 官方文档(小技巧) Officail Website: https://learn.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver16. Officail Website(中文): https://learn.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver16. 1.2 Conn Tool 官方自带的 SQL Server Management Studio (SSMS) SSMS Install: https://learn.microsoft.com/en-us/sql/ssm

    2024年02月04日
    浏览(31)
  • SQL Server数据库基础知识汇总

    目录 目录 一、数据库概念 1.1 什么是数据库 1.2 为什么用数据库 1.3 数据库的发展历史 1.4 数据库分类 1.5 DBMS数据库管理系统 二、 SQL(Structured Query Language) 2.1  定义 2.2  SQL分类 2.3 SQL与T-SQL 三、SqlServer下载与安装 四、数据库表各类操作 1 创建数据库登录用户 2 使用DCL赋予数据

    2023年04月09日
    浏览(42)
  • 软件测试常见基础知识面试题

    为了发现程序中的错误而执行程序的过程 1)需求调查 2)制定初步的项目计划 3)测试准备 4)测试设计 5)测试实施 6)测试评估 单元测试、集成测试、确认测试、系统测试、验收测试 单元测试:是用来对一个模块,一个函数或者一个类来进行正确性检验的测试工作 集成测

    2024年02月12日
    浏览(30)
  • MySql003——SQL(结构化查询语言)基础知识

    DB:数据库(Database) 即存储数据的“仓库”,其本质是一个 文件系统 。它保存了一系列有组织的数据。 DBMS:数据库管理系统(Database Management System) 是一种操纵和管理数据库的 大型软件 (例如我们前面下载的MySQL软件),用于建立、使用和维护数据库,对数据库进行统一

    2024年02月15日
    浏览(34)
  • MySQL 基础知识(一)之数据库和 SQL 概述

    目录 1 数据库相关概念 2 数据库的结构 ​3 SQL 概要 4 SQL 的基本书写规则 1 数据库相关概念 数据库是将大量的数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合 数据库管理系统(DBMS)是用来管理数据库的计算机系统,通过使用 DBMS,多个用户可以安全、简单

    2024年02月20日
    浏览(36)
  • Hive基础知识(十六):Hive-SQL分区表使用与优化

    分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。 Hive 中的分区就是分目录 ,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的 查询效率会提高很多

    2024年01月18日
    浏览(34)
  • MySQL基础篇——MySQL数据库客户端连接,数据模型,SQL知识

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.客户端连接MySQL 二. 数据模型 1.关系型数据库(RDBMS) 2.数据模型 三.SQL 1.SQL通用语法 2.SQL分类 3.数据库操作 1). 查

    2024年02月06日
    浏览(50)
  • 常见的SQL注入类型

    SQL注入简单原理 * 注:?为php语言中的输入符 (1)、按注入点区分: 1、数字型注入 数字型注入主要存在于网站的 url 中有?id=处,如:http://xxx.com/index.php?id=1 通过改变id=的数值来判断是否有注入点,一般常见测试手段是令id等于一个不常见的大数,通过页面是否变化来判断是

    2023年04月24日
    浏览(31)
  • 常见的一些SQL注入漏洞类型

    刚接触SQL注入,写一遍笔记帮助自己回顾知识或者给其他有需要的小伙伴。可能文中有的地方讲的不对,希望可以得到大佬们的纠正,谢谢! SQL 注入是一种网络安全漏洞,允许攻击者干扰应用程序对其数据库的查询。它通常允许攻击者查看他们通常无法检索的数据。这可能

    2024年02月07日
    浏览(39)
  • PHP常见的SQL防注入方法

    产生原因主要就是一些数据没有经过严格的验证,然后直接拼接 SQL 去查询。导致产生漏洞,比如: 因为没有对 $_GET[‘id’] 做数据类型验证,注入者可提交任何类型的数据,比如 \\\" and 1= 1 or \\\" 等不安全的数据。如果按照下面方式写,就安全一些。 把 id 转换成 int 类型,就可

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包