ONKay1 2024-05-06 10:05 采纳率: 71.4%
浏览 8

sql注入问题,标题和内容两个注入点

一个web题目,该如何注入得到信息,普通注入不通过,该怎么注入,求解答

img

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-06 10:05
    关注

    引自免费微信小程序:皆我百晓生

    针对这个题目,看起来是一个简单的SQL注入测试场景。题目提示了两次尝试的注入语句,并且显示了错误信息,这表明服务器端对输入进行了部分过滤。不过,我们可以通过巧妙地构造SQL语句来绕过这些限制。

    首先,让我们分析一下已知的注入尝试:

    1. 1';show database#
    2. 1';show database#

    这两个尝试都被服务器阻止了,因为它们包含了分号(;),这是SQL语句结束的标志。然而,我们可以利用一些技巧来继续执行SQL命令。

    一种可能的方法是使用注释符来隐藏我们的SQL命令。在MySQL中,有两种注释方式:单行注释(--)和多行注释(/* ... */)。由于题目中的URL中有%20or%201=1/*,这可能是试图开启一个多行注释,但被服务器过滤掉了。我们可以尝试使用单行注释来避开这个问题。

    这里有一个可能的注入方法:

    1. 尝试使用单引号(')作为字符串边界,这样可以防止SQL解析器误将我们的SQL命令当作变量。
    2. 使用单行注释(-- )来隐藏剩余的SQL命令。

    考虑以下注入语句:

    ' UNION SELECT column_name, table_name FROM information_schema.columns WHERE table_schema = DATABASE(); --
    

    这个注入语句的作用是获取当前数据库下的所有表名和列名。我们将它插入到标题或内容字段中,例如:

    标题: ' UNION SELECT column_name, table_name FROM information_schema.columns WHERE table_schema = DATABASE(); -- 内容: ' UNION SELECT column_name, table_name FROM information_schema.columns WHERE table_schema = DATABASE(); --

    如果你能够成功执行这个注入,你应该能看到返回的结果包含了一些关于数据库结构的信息。注意,实际操作时,你需要将上述SQL语句替换为双引号("),因为在这里我使用的是单引号以便于展示。

    如果你想要进一步查询特定表的数据,你可以修改注入语句,例如查询名为users的表中的数据:

    标题: ' UNION SELECT * FROM users LIMIT 10; -- 内容: ' UNION SELECT * FROM users LIMIT 10; --

    这段代码会返回users表的前10条记录。当然,在实际应用中,我们应该尊重隐私并避免滥用这样的技术。这只是一种用于教育目的的示例。

    请注意,这个例子基于MySQL数据库,不同数据库系统可能会有不同的语法,所以在实际环境中,你需要根据目标系统的具体特性调整注入语句。此外,为了安全起见,请确保你在受控的环境或拥有权限的情况下进行此类测试。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月6日

悬赏问题

  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开