web安全-----sql注入(一)

本文深入探讨了SQL注入的概念、分类及产生条件。详细介绍了基于不同反馈、输入处理方式、注入顺序和位置的SQL注入类型,并列举了一阶注入和二阶注入的区别。此外,还概述了MySQL的基础知识,包括其数据库结构和常用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql注入的概念

==SQLI,sql injection==,我们称之为 sql 注入。Sql语言就是我们在管理数据库时用到的一种。在我们的应用系统使用 sql 语句进行管理应用数据库时,往往采用拼接的方式形成一条完整的数据库语言,而危险的是,并没有仔细考虑用户提交的数据是否合法,导致提交的恶意代码直接执行。在web安全中,产生的漏洞比如xss,文件上传,命令执行漏洞产生的原因都是注入恶意代码,并且要可以解析。

sql注入的分类

==基于从服务器接收到的响应==
1. 基于错误的SQL注入
2. 联合查询的类型,基于union
3. 堆查询注射,用分号连接两个sql语句
4. SQL 盲注,就是当网页并不将执行sql语句的结果输出,但是将sql语句执行了,这种sql注入称为盲注,盲注分为:基于布尔 SQL 盲注 , 基于时间的 SQL 盲注,基于报错的 SQL 盲注,


基于时间的盲注:通过mysql的函数sleep(time),根据时间延迟来判断提交的sql语句是否被执行。


基于布尔的盲注:通过and或者or然后在后面产生一个条件来通过页面是否正常显示来判断注入的语句是否执行。

基于错误的盲注:使用group by 对一些rand()函数进行操作时会返回duplicate key 错误,而这个错误将会披露关键信息.

==基于如何处理输入的 SQL ====
1. 字符型
2. 数字型
这两个主要是因为考虑到字符串的闭合问题,如果是字符型需要用单引号来闭合.
3.搜索型 比如拼接的语句是这样”select * from users where username like “+ name+ _name(变量)开头的username


==基于程度和顺序的注入 ====
1. 一阶注入(直接将注入的语句执行)
2. 二阶注入(比如说:在用户留言板或者评论区的sql语句,先插入数据库存储,然后展示的时候将这个内容直接从数据库拿出来,和查询的语句拼接在一起造成sql注入,通常这类漏洞比一阶注入常见,这类漏洞需要从源码审计挖掘)


==基于注入点的位置上的==
1. 通过用户输入的表单域的注射
- [ 比如说登录页面,用户名和password存在注入,就直接可以构造语句绕过登录认证]

  1. 通过 cookie 注射
  2. 通过http头
    • [ 比如通过x-forwarded-for注入,通过x-forwarded-for可以伪造真实的ip,有时候在登录后台的时候,会验证你的真实ip,这个时候可以用burpsuit抓包修改这个参数来伪造ip,绕过认证 ]

sql注入产生的必备条件

1.变量接受


$_GET 接受get传递

$_POST接受post传递

$_COOKIE接受cookie传递

$_REQUEST 全部接受


  1. 带入数据库查询执行
  2. 不存在过滤(可尝试绕过)

mysql基础知识

数据库的结构

  1. Mysql5.0以上自带数据库:information_schema:存储mysql下所有信息的数据库(数据库名,表名,列名)
  2. information_schema.SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
  3. TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
字段名介绍
Table_schema数据表所属的数据库名
Table_name表名称
Column_name列名称

4. COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

函数介绍

函数功能
database()数据库名,当前使用的数据库
user()数据库用户,判断是否是root最高权限(读写文件的权限)
version()数据库版本,Mysql5.0以上自带数据库information_schema
@@version_compile_os操作系统,windows搭建的对大小写不敏感,linux下一定要注意大小写
@@datadir数据库路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值