玄客) 2024-09-03 22:06 采纳率: 0%
浏览 6

sql-lab靶场 sql注入

想问一下sql-lab通关游戏第17关报错注入,注入点在pd,为什么构造
adm' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)#
就不能成功爆出表名
但是用
123'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)#
就能成功?
为什么数字可以而字符串不行啊

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-09-03 22:07
    关注

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

    这个问题涉及到SQL注入攻击的一种常见类型,即通过构造特殊字符或者表达式来获取数据库中的敏感信息。在这个特定的例子中,我们尝试获取"security"表的名字。

    首先,我们需要理解SQL语句如何工作。当用户输入一个查询时,服务器会解析这个查询,并根据规则执行它。对于SQL注入攻击来说,目标是构造一些特殊的字符或者表达式,使得服务器执行这些特殊字符作为SQL命令,从而获取到额外的信息。

    在给定的示例中,updatexml()函数是一个常见的用于将文本转换为XML格式的功能。然而,问题的关键在于构造concat()函数的参数。concat()函数实际上是在两个字符串之间拼接它们,但在这里,我们需要的是将一个字符串与一个包含SQL命令的字符串拼接在一起。

    所以,问题的关键在于构造concat()函数的第二个参数。为了达到目的,我们需要确保concat()函数的第二个参数是一个有效的SQL命令。由于updatexml()函数返回的结果可能是XML数据,我们可以利用这一点:

    123'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)
    

    这段代码试图构造一个SQL命令,其中第一个子串(concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e))是一个合法的SQL命令,用于获取"information_schema.tables"表中"table_name"列的值。然后,我们将结果与另一个字符串(123')连接起来,这应该是一个有效的SQL命令。

    然而,尽管这个逻辑看起来正确,但在实际运行时,这会导致错误。这是因为concat()函数的第二个参数实际上是被用来连接字符串的,而不是执行SQL命令。因此,当我们尝试将字符串concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e)连接到字符串123'时,服务器收到的是一个非法的SQL命令,而不是预期的字符串。

    要解决这个问题,你需要修改你的SQL语句以正确地执行concat()函数的第二个参数。例如,如果你想要将两个字符串连接起来,你应该使用+操作符,如下所示:

    123+'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)'
    

    这样,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e)会被视为一个合法的SQL命令,而123会被添加到结果上,从而产生正确的输出。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月3日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀