sql 注入盲注时常用函数

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    92 引用 • 588 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 391 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 715 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖 • 1 关注
  • WiFiDog

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

    1 引用 • 7 回帖 • 594 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 8 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 370 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    178 引用 • 816 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 9 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 244 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 6 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 226 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    34 引用 • 148 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖 • 2 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 1 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 899 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 795 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 519 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 150 关注
  • 快应用

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

    15 引用 • 127 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    121 引用 • 604 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 1 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    313 引用 • 547 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 104 关注
  • danl
    148 关注