sql 注入盲注时常用函数

本贴最后更新于 2005 天前,其中的信息可能已经物是人非

0x00 盲注

盲注是不能通过直接显示的途径来获取数据库数据的方法,在盲注中,攻击者根据其返回页面的不同来判断信息。盲注一般可分为三类:Booleanbase、Timebase、Errorbase。

接下来介绍一些 sql 盲注中常用的函数。

0x01 limit()

limit()函数的作用是限制由 SELECT 语句返回的数据数量,用法是
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]
select * from user limit 2,1; //从第三行开始提取一行
其中各参数意义如下:

  • column : 必要参数,要查询的字段名,可以同时查询多个。
  • table_name : 必要参数,要查询的表名。
  • no of rows : limit 之后的第一个数字代表行数(从 0 开始算)后面数字代表从这行要返回的行数。

和 offset 同时用时用法如下
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]。
select * from user limit 1 offset 2 //从第三行开始提取一行
其中各参数意义如下:

  • no of rows : 取到的行数。
  • row num : 起始位置(从 0 开始算)

0x02 mid()

mid()函数的作用是截取字符串的一部分,用法是
mid(column_name,start[,length])
其中各参数的意义如下:

  • column_name : 必要参数,要提取字符的字段。
  • start : 必要参数,规定提取的起始位置,从 1 开始。
  • length : 可选参数,要返回的字符长度,如果省略会返回剩余的全部文本。

如:
mid(database(),1,1)
返回数据库名的第一位。
mid(database(),1,1)>'a'
返回数据库名的第一位并与 a 的 ascii 作比较。

  mid((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x76657374 LIMIT 0,1),1,1)

查找 test 数据库的第一个表名并提取表名的第一位。

0x03 substr()、substring()

substr()、substring()函数的作用也是截取字符串,用法同 mid()
substring(string, start, length)
substr(string, start, length)
其中各参数意义如下:

 string : 必要参数,要提取字符的字段。
 start : 必要参数,规定提取的起始位置,从1开始。
 length : 可选参数,要返回的字符长度,如果省略会返回剩余的全部文本。

  substr(DATABASE(),2,1)>'a'

返回数据库名的第二位并与 a 的 ascii 作比较。
substr((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x76657374 LIMIT 0,1),1,1)>'a'
查找 test 数据库的第一个表名并提取表名的第一位,然后有 a 的 ascii 作比较。

0x04 left()

left()函数的作用是得到字符串左部开始指定个数的字符。
left(string,n)
其中各参数意义如下:

 string : 必要参数,要截取的字符串。
 n : 必要参数,规定截取的长度,从1开始。
 left(database(),1)>'a'

查看数据库名的第一位并和 a 的 ascii 作比较。

0x05 ord()

ord()函数的作用是返回字符串中第一个字符的 ASCII 值。
ord(string)
其中各参数意义如下:

string : 必要参数,要获取的字符串。
ord(mid(user(),1,1))=114

检测 user()的第一个字符是否等于 114,即是否等于 r,一般用来判断是否是 root 权限。

0x06 sleep()

sleep()函数的作用是让代码执行延迟若干秒。
sleep(seconds)
其中各参数意义如下:

seconds : 必要参数,延迟的秒数。	
if(ascii(substr(database(),1,1))>'a',1,sleep(5))#

检测数据库的第一个字符的 ascii 和 a 比较,如果浏览器直接显示,说明比 a 大,如果浏览器五秒后才显示,说明比 a 小。

0x07 benchmark()
benchmark()函数的作用是重复执行指令。
benchmark(count,expr)
其中各参数意义如下:

count : 必要参数,重复的次数。
expr : 必要参数,执行的语句。

0x08 grunp_concat()

grunp_concat()函数的作用是连接字段字符串。
group_concat([DISTINCT] name [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

其中各参数意义如下:

name : 要连接的字段
substr((select group_concat(schema_name) from information_schema.schemata limit 0,1),1,1)=105

0x09 总结

盲注是 sql 注入中十分常用的手段,而且盲注很多时候需要写脚本来实现,熟悉这些函数,结合前面的绕过方法,会让自己的脚本更加灵活。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 7 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 18 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 430 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    66 引用 • 124 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • OnlyOffice
    4 引用 • 19 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 346 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 3 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 41 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 636 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 247 回帖 • 212 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    81 引用 • 122 回帖 • 614 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1446 回帖 • 1 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 74 回帖 • 3 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 275 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 56 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 294 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 8 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 426 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖