当前位置: 首页 > article >正文

sql注入基础知识

 sql注入原理

web页面通常会根据用户输出的内容生成动态的sql查询语句,如果数据库没有对用户输的语句进行合适的过滤导致攻击者可以通过特殊的sql语句来操作查询内容。

sql注入的形式

基础字符串解析:

table_schema代表数据库名

table_name代表表名

column_name代表列名

information_schema.tables可以获取关于 MySQL 实例中所有数据库和表的结构化信息
information_schema.columns可以获取关于 MySQL 实例中所有数据库和列的结构化信息

information_schema.schemata里面储存了所有的库名

group_concat()将多个行的值合并成一个单一的字符串,方便展示

extractvalue,updatexml函数在mysql数据库中处理 XML 数据的两个函数

-- 是SQL中常用的单行注释符号,后面的内容会被视为注释

#表示对后面的语句进行注释

1.联合注入

示例语句:

-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),3

查询security数据库中的users表中的所有列

2.宽字节注入

利用不同的字符所占的字节数不同(编码之间的差异),在sql查询中插入特殊字符达到绕过过滤的目的。

-1%df%27 union select 1,database(),user()--+

%df是β的url编码

3.跨库注入

在具有root权限的情况下,绕过常规安全限制通过sql语句对同一服务器上的不同数据库进行查询。

4.二次注入

先写入一次攻击语句,然后再找到合适的点位写入sql数据库中的语句进行拼接,以达到可以注出内容的操作。恶意的SQL注入代码并不会在第一次输入时立即被执行,而是存储在数据库中,并在后续的请求或操作中被执行。通过数据库的存储和后续操作的特点来进行绕过。

5.延时注入

通过页面回显的时间变化来判断,利用sleep函数进行一个延迟,正确会延迟设置的时间返回内容,不正确立马返回内容。

6.布尔盲注

布尔盲注是在没有回显的时候进行注入的一种方式,攻击者通过向SQL查询注入布尔表达式,并根据网页响应的变化来判断条件的真假,从而推测出敏感信息。

7.报错注入

在sql数据库中的代码会返回错误的信息,我们就可以利用extractvalue,updatexml函数穿插查询语句来使数据库故意报错并返回数据内容。

常规手段被禁止的替换手段

禁止空格:

/**/  /*!*/  %20 %09 %0a %0b %0c %0d %a0 %00

通常用于替代空格

禁止=:

使用like 、rlike 、regexp 或者 使用< 或者 >,char(61)

禁止order:

使用group替代order

禁止select:

使用handler命令进行查看,预编译的方法来拼接关键字

靶场推荐

1.sqli-libs靶场
2.pikachu靶场


http://www.kler.cn/a/390796.html

相关文章:

  • MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?
  • activiti5基础和springboot整合
  • 编译ffmpeg动态库时设置RPATH为$ORIGIN
  • Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)
  • 场景解决之mybatis当中resultType= map时,因某个字段为null导致返回的map的key不存在怎么处理
  • 【机器学习】平均绝对误差(MAE:Mean Absolute Error)
  • 海柔仿真系统存储实践:混合云架构下实现高可用与极简运维
  • 【cft.show-web3解题思路】-php://input伪协议
  • 行业类别-金融科技-子类别区块链技术-细分类别智能合约-应用场景供应链金融课题
  • Python 正则表达式使用指南
  • Vue页面假死点不动现象Cannot read properties of undefined(reading ‘_wrapper‘)报错
  • 如何在Linux中使用Cron定时执行SQL任务
  • ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析
  • 机器学习(基础2)
  • HCIP-快速生成树RSTP
  • redis:zset有序集合命令和内部编码
  • 漏洞扫描工具和漏洞利用工具
  • C++ 11新特性:列表初始化,右值引用与移动语义
  • 《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
  • 【JavaEE】JUC的常见类
  • Android 开发指南:初学者入门
  • 如何比较科学的设置代理ip
  • react 类组件和函数组件区别
  • 【系统架构设计师】真题论文: 论数据挖掘技术的应用(包括解题思路和素材)
  • 一些npm总结(持续更新...)
  • pwn学习笔记(12)--Chunk Extend and Overlapping