sql 注入盲注时常用函数

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 25 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 741 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • webpack

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

    42 引用 • 130 回帖 • 248 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 409 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 645 关注
  • danl
    165 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 610 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖 • 1 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    588 引用 • 3538 回帖 • 1 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 2 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 630 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 441 关注
  • JSON

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

    52 引用 • 190 回帖 • 1 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    411 引用 • 3588 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 742 回帖
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1280 回帖 • 3 关注