我又回来了关于dvwa的另一个问题,这次我已升级到MsSQL 2005,我还有另外一组问题。我不明白一些事情。 我希望某个人能够向我表明这一点。
基本上,像往常一样 - 我的目标是从DVWA获取所有数据库,并使用手动注入技术升级到管理面板。
到目前为止我所拥有的是数据库,但我对语法的变化感到有些困惑。我让服务器获取数据库,它返回给我第一个数据库。我的查询如下:
+
and+1=
convert
(
int,db_name()
)
--
我的第一个问题是 - 如何编辑此查询以便我能够查看所有数据库,因为据我所知,此查询仅删除SQL数据中的第一个数据库。好的,我的第二个问题是,当我使用此查询查找表时,第一个被删除的数据库是“信息”:
+
and+1=
convert
(
int,
(
select+top+1+table_name+from+information_schema.tables
)
)
--
它返回了该数据库的第一个表。首先,假设我拥有的不仅仅是第一个数据库,我如何更改此查询以获取该数据库名称的表格。其次,它返回的表是tbl_info_id。
请注意,服务器在coldfusion上运行IIS 6.0。 我知道,要从该数据库请求下一个表,我将不得不创建一个这样的查询:
+
and+1=
convert
(
int,
(
select+top+1+table_name+from+
information_schema.tables+where+table_name+not+in('tbl_info_id')
)
)
--
当我写它时,服务器响应:
[SQLServer]Incorrect syntax near 'tbl_info_id'.
这就是全部,如果有人能向我解释这一切,我将不胜感激!欢呼声。
答案 0 :(得分:0)
这有两个问题:
convert
(
int,
(
select+top+1+table_name+from+
information_schema.tables+where+table_name+not+in('tbl_info_id')
)
)
首先是加号。用单个空格替换它们。
第二个是您尝试将非数字字符串转换为整数。这不会计算。
关于逻辑,你的散文说你想要数据库名称,但你的代码正在寻找表名。如果需要数据库名称,请执行以下操作:
select name
from sys.databases