提问人:Robot110010 提问时间:11/29/2022 最后编辑:Robot110010 更新时间:11/29/2022 访问量:2172
用于枚举数据库中可用表的 SQL 注入查询
SQL injection query for enumerating available tables in databases
问:
我们有一个练习,正在努力想出一个sql注入,以从mySQL中的数据库中查找更多数据。
以下是我们已经走了多远: mySQL网页结果
在上图中,您可以看到我们已经设法让数据库泄露了 userid、user 和 passwd 值。
为此,我们在登录框中键入了:admin' --
然后:在密码框中' union select table_name from information_schema.tables --
然而,这并不是练习的全部目标。我们必须发现可用的数据库和表。
我们不确定为什么响应没有考虑我们的查询。union select table_name from information_schema.tables
下面是一个示例,说明如果未在登录名或密码框中键入任何内容,则响应是什么: 默认 mySQL 网页
我们的任务:
- 枚举数据库中的可用表
- 查找用户 ID 为 3 的用户名(完成 - 对吗?
- 查找包含 MD5 哈希值的表
有人能为我们指明正确的方向吗?
为什么我们不工作?select table_name from information_schema.tables
更新:在第一个登录框中重组初始查询后,我们设法返回了 238 行:
admin’ union select table_name,2,3 from information_schema.tables -- -
修复:列的数量必须在第一个选择查询和联合选择查询之间匹配。
答:
0赞
dc-ddfe
11/29/2022
#1
您可能需要将整个注入放在用户名框中。目前,登录输入之后正在注释查询的其余部分。--
admin'
即登录框应包含admin' UNION SELECT table_name FROM information_schema.tables --
您可能需要从中选择填充列,因为无法判断表有多少列。information_schema.tables
users
评论
0赞
Robot110010
11/29/2022
填充列会是什么样子?只是table_name,2,3,4......直到达到正确的数字?此外,我们将整个注入放在用户名框中,但是根本没有返回任何内容......
0赞
Robot110010
11/29/2022
我们试过了......table_name,2,3 来自...现在返回了 238 行!
0赞
dc-ddfe
11/29/2022
然后你就完成了,对吧?当然,你可以从任何表格中将我的答案扩展到你想要的任何内容,只要你以同样的方式添加填充列。UNION SELECT
0赞
Robot110010
11/29/2022
我们找到了一个名为“sql_lab_tokens”的表,因此我们进行了查询:“admin' union select column_name,2,3 from information_schema.columns where table_nam = 'sql_lab_tokens' -- -”。这为我们提供了列名称的列表。我们现在想找出其中的数据。因此,我们尝试了以下查询:“admin' union select * from sql_lab_tokens -- -”,但这不起作用。我们想知道这个sql_lab_tokens表中的数据...
0赞
dc-ddfe
11/29/2022
你走在正确的轨道上,但我不会为你做所有的功课。相反,这里有一些问题应该引导你去你需要去的地方。1. 为什么我告诉你在查询中添加填充列?2. 为什么您的注射剂仅在添加时有效?3. 这是否告诉您有关“用户”表的任何信息?4. 和 和有什么不一样?为什么第一个有效,而第二个无效?5. 如何修改第二个查询以使其正常工作?,2, 3
admin' union select table_name,2,3 from information_schema.tables --
admin' union select * from sql_lab_tokens
评论