知道是否存在特定的列

时间:2019-02-28 20:07:02

标签: mysql sql web-applications sql-injection

嗨,,当输入以下网址时(仅供学习),我可以看到ID = 1的图片。

因此,我尝试使用此方法来查找数据库中某些表的名称,并且该方法有效。这可以检测是否存在以'albu'开头的表:

  

http://35.227.24.107:5001/d0510b3060/fetch?id=1和(从INFORMATION_SCHEMA.TABLES中的TABLE_NAME像'albu%'中选择COUNT(*))> 0; -

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

  

http://35.227.24.107:5001/d0510b3060/fetch?id=1 AND(从INFORMATION_SCHEMA.TABLES中选择COUNT(*),其中TABLE_NAME ='albums'AND column_name像'albu%')> 0; -

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

1 个答案:

答案 0 :(得分:1)

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

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

NB:您可能还想对TABLE_SCHEMA进行过滤。它需要使用模式表名来唯一标识数据库中的表。