一个web题目,该如何注入得到信息,普通注入不通过,该怎么注入,求解答
6条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
针对这个题目,看起来是一个简单的SQL注入测试场景。题目提示了两次尝试的注入语句,并且显示了错误信息,这表明服务器端对输入进行了部分过滤。不过,我们可以通过巧妙地构造SQL语句来绕过这些限制。
首先,让我们分析一下已知的注入尝试:
1';show database#
1';show database#
这两个尝试都被服务器阻止了,因为它们包含了分号(
;
),这是SQL语句结束的标志。然而,我们可以利用一些技巧来继续执行SQL命令。一种可能的方法是使用注释符来隐藏我们的SQL命令。在MySQL中,有两种注释方式:单行注释(
--
)和多行注释(/* ... */
)。由于题目中的URL中有%20or%201=1/*
,这可能是试图开启一个多行注释,但被服务器过滤掉了。我们可以尝试使用单行注释来避开这个问题。这里有一个可能的注入方法:
- 尝试使用单引号(')作为字符串边界,这样可以防止SQL解析器误将我们的SQL命令当作变量。
- 使用单行注释(-- )来隐藏剩余的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数据库,不同数据库系统可能会有不同的语法,所以在实际环境中,你需要根据目标系统的具体特性调整注入语句。此外,为了安全起见,请确保你在受控的环境或拥有权限的情况下进行此类测试。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 用verilog实现tanh函数和softplus函数
- ¥15 Hadoop集群部署启动Hadoop时碰到问题
- ¥15 求京东批量付款能替代天诚
- ¥15 slaris 系统断电后,重新开机后一直自动重启
- ¥15 QTableWidget重绘程序崩溃
- ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
- ¥15 关于vue2中methods使用call修改this指向的问题
- ¥15 idea自动补全键位冲突
- ¥15 请教一下写代码,代码好难
- ¥15 iis10中如何阻止别人网站重定向到我的网站