sql 注入盲注时常用函数

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 707 关注
  • Bootstrap

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

    18 引用 • 33 回帖 • 647 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 28 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 44 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 110 关注
  • V2Ray
    1 引用 • 15 回帖
  • Hadoop

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

    89 引用 • 122 回帖 • 621 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 635 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 1 关注
  • OneNote
    1 引用 • 3 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 648 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    290 引用 • 4494 回帖 • 652 关注
  • Hprose

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

    9 引用 • 17 回帖 • 636 关注
  • Outlook
    1 引用 • 5 回帖 • 2 关注
  • NetBeans

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

    78 引用 • 102 回帖 • 703 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 241 回帖
  • 996
    13 引用 • 200 回帖 • 8 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 288 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖
  • 微信

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

    133 引用 • 796 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 168 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 61 关注