Shadowyz. 2024-10-22 20:09 采纳率: 0%
浏览 4

报错注入中一个有意思的问题

发现一个问题
刚学到sql注入的报错注入,搭建的靶场是sqli-labs less6
http://localhost/sqli-labs-master/Less-6?id=-1" union select 1,2,updatexml(1,substring((select group_concat(0x7e,username,':',password) from users),1,30),3)--+
这样是可以正常显示前三十个字符的 将0x7e 换成类似 '|' '=' 这种也可以正常输出

img


换成'-' 或者其他诸如'a' 'b' 这种 都会从第二个用户开始输出

img

换成类似 '1' '2' 等数字这种 会从第一个用户开始 但是第一个用户之前不会输出数字

img

求带佬告知原由

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-10-22 20:10
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的描述和报错信息来看,你遇到的问题是关于SQL注入攻击中常见的报错注入问题。具体到你使用的sqli-labs靶场中的Less-6场景,当尝试通过报错信息获取数据库中的用户信息时,发现当使用某些字符替换0x7e时,输出的结果顺序会有变化。这里的关键在于对SQL语句中字符和字符串的处理方式。让我们来逐一分析你的问题:

    1. 字符替换的影响:在SQL注入攻击中,注入的语句通常需要绕过Web应用程序的过滤机制,并直接与数据库交互。当使用特定的字符或字符串替换查询中的某些部分时,这些替换会影响查询的结构和执行方式。比如在你的场景中,替换字符如'a''b'可能会导致查询的结构发生变化,从而影响输出的顺序。这可能是由于数据库查询优化器对这些查询的处理方式不同。
    2. 关于输出顺序的变化:在SQL注入攻击中,尤其是利用报错信息获取数据时,通常使用的是union select语句来联合查询结果。如果数据库表中有多个用户,且注入的查询没有正确地组合成一个单一的查询结果集,那么输出顺序可能会受到影响。这也解释了为什么当你使用不同的字符替换时,输出的用户信息顺序会发生变化。这可能是由于数据库查询优化器在处理这些查询时的行为差异导致的。
    3. 关于数字字符的影响:当你使用数字字符如'1''2'替换某些部分时,可能由于这些数字在数据库中的特定含义(如作为用户ID或其他标识符),导致查询结果集发生变化。这也解释了为什么使用数字字符会从第一个用户开始输出信息的原因。这也可能涉及到你所使用的数据库的表结构和其他细节设置有关。每个数据库都可能根据内部算法和数据结构对查询进行优化和解析,从而导致不同的结果输出顺序。此外,还可能与SQL注入攻击的具体技巧有关。不同的注入技巧可能导致不同的结果输出顺序和结果集大小。因此,在使用不同的字符或字符串进行替换时,需要确保注入语句的正确性和准确性,以获取预期的结果。在实际的攻击场景中,可能需要不断调整和优化注入语句以绕过过滤机制并获取目标数据。总的来说,这是一个关于SQL注入攻击和数据库处理机制的复杂问题。为了解决你的问题并更好地理解这一现象背后的原因,你可能需要深入研究SQL注入攻击的原理、数据库查询优化器的行为以及具体的数据库表结构等细节。同时,确保你的操作是合法的并且符合道德和法律标准是非常重要的。
    评论

报告相同问题?

问题事件

  • 创建了问题 10月22日