首页 > 数据库 >SQL注入

SQL注入

时间:2022-11-22 23:23:27浏览次数:24  
标签:语句 SQL select Sql where id 输入 注入

概念

Sql注入攻击是通过将恶意的Sql查询和添加语句插入到应用的输入参数中,再在后台Sql服务器上解析执行进行的攻击。

Web应用分为以下三种结构:

当访问动态网页时,web服务器会向数据层发起sql查询请求,如果权限验证通过就会执行 Sql 语句。(因此就可以通过特定的SQL语句来查看数据库里面的一些数据或者绕过验证登录网站的后台)

最为经典的单引号判断法: 在参数后面加上单引号,比如:

http://xxx/abc.php?id=1'

如果页面返回错误,则存在 Sql 注入。 这是一条错误的sql语句,页面返回异常,则说明我们输入的单引号被当做sql语句带了进去。若返回正常则说明我们输入的单引号被过滤了,如果想对此网站进行注入攻击只能试着绕狗了

数字型漏洞

数字型判断:

当输入的参数 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下: select * from <表名> where id = x 这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

                i.          Url 地址中输入 http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。

               ii.          Url 地址中继续输入 http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

原因如下: 当输入 and 1=1时,后台执行 Sql 语句:

select * from <表名> where id = x and 1=1 
 
没有语法错误且逻辑判断为正确,所以返回正常。

当输入 and 1=2时,后台执行 Sql 语句:

select * from <表名> where id = x and 1=2
 
没有语法错误但是逻辑判断为假,所以返回错误。 我们再使用假设法:如果这是字符型注入的话,我们输入以上语句之后应该出现如下情况:

select * from <表名> where id = 'x and 1=1' 
select * from <表名> where id = 'x and 1=2' 
 
查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的

字符型漏洞

字符型判断:

当输入的参数 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下: select * from <表名> where id = 'x' 这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:  

i.    Url 地址中输入 http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。

ii.    Url 地址中继续输入 http://xxx/abc.php?id= x' and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。

原因如下: 当输入 and '1'='1时,后台执行 Sql 语句:
select * from <表名> where id = 'x' and '1'='1'
语法正确,逻辑判断正确,所以返回正确。

当输入 and '1'='2时,后台执行 Sql 语句:
select * from <表名> where id = 'x' and '1'='2'


语法正确,但逻辑判断错误,所以返回正确。同学们同样可以使用假设法来验证。

 

标签:语句,SQL,select,Sql,where,id,输入,注入
From: https://www.cnblogs.com/bashliuhe/p/16916865.html

相关文章

  • Mysql-约束
    droptableifexistsemp;CREATEtableemp(idINTPRIMARYKEYauto_increment,--员工id,自增长enameVARCHAR(50)NOTNULLUNIQUE,--员工姓名,非空且唯一joi......
  • MySQL进阶实战1,数据类型与三范式
    一、选择优化的数据类型MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。1、更小的一般情况下,应该尽量使用较小的数据类型,更小的数据类型通常更快......
  • Go语言SQL语句到结构体的转换命令行工具
    学习:SQL语句到结构体的转换|Go语言编程之旅(eddycjy.com)目标:SQL表转换为Go语言结构体可以在线体验这个过程:SQL生成GO语言结构体-支持批量处理(tl.beer)MySQL数......
  • 在sqlplus中实现命令的上翻下翻功能
    文章目录​​1、安装rlwrap软件包​​​​2、设置指令的别名​​​​3、获取视频教程​​​​4、版权声明​​在Oracle的sqlplus中,使用SQL语句不太方便,sqlplus没有提供类似......
  • freecplus框架-MySQL数据库操作
    文章目录​​一、源代码说明​​​​二、概述​​​​三、connection类​​​​四、sqlstatement类​​​​五、程序流程​​​​1、无结果集SQL的程序的流程​​​​2、有......
  • MySQL基础知识
    今日内容概要数据操作的发展过程数据库相关知识数据库的分类MySQL的下载及使用SQL与NoSQLSQL的基本语句今日内容详细数据操作的发展过程最初是通过文档存储,文档......
  • 关于若依框架后台数据库中午乱码 MySQL8.0 中文乱码
    --查看字符集编码设置为以下showVARIABLESlike'CHARACTER%'setcharacter_set_results=utf8mb4;character_set_client utf8mb4character_set_connection utf8......
  • 数据库、MySQL
    1.存取数据的演变史1.文本文件: 文件路径不固定(导致代码兼容性下降) 数据格式不统一:(max|123,max_123)2.软件开发目录规范: 1.规定了数据应该保存在db目录......
  • MySQL数据库简介与基本语法
    目录一、MySQL数据库1.简介2.用管理员身份登录3.密码相关操作4.SQL与NoSQL5.数据库重要概念二、MySQL基本语句1.基于库的增删改查2.基于表的增删改查3.基于记录的增删改查4......
  • [Bug0060]DBeaver打开sql脚本中文乱码
    问题乱码导入在表中也是展示乱码,想修改表中乱码,可以先修改为utf-8重新导入场景导入pig数据库发现乱码原因软件默认使用了GBK编码读取sql文件解决方案修改为UTF-8编......