多种类型SQL注入

前言

  发现MYSQL手注注入方式用得多了,几乎都快忘记其它数据库注入的方式了,这里不讲绕过姿势和写shell,毕竟网上很多前辈都给了方法,我只讲一些基本的注入方式(只是记录一下各自的特性,记下来方便以后参考回忆。)

 

MYSQL数据库

  从5.0以后,就有information_schema自带库,通过它可以注入查询想要的数据

  只有两个字段和单引号闭合的情况下

  ?id=1' and 1=2 union select 1,table_name from information_schema.tables where table_schema=database()%23

  tables       自带库中的一个表

  table_name   是该表的一个字段名

  %23      是#的url编码,#注释是MySQL特有的注释符,--注释是通用于大多数据库

  key_column_usage、schemata、columns表等

  通过它也能获取想要的数据,一般来说输出长度和数量都有限制,可以分页查询limit来读取数据

  获取数据库名

  获取表名

 

  获取字段名

 

 MSSQL数据库

  一样的思路,判断是否存在注入,猜字段数,联合查询得到输出点,才开始查数据

  需要注意的是:

    1.联合查询时使用union all ,这点与MySQL有点区别的。

    2.才输出点占位填充时,当不确定它每个位置的数据类型,使用NULL填充;否则数据类型要一一对应起来。

    3.注释符就只有--

  重点来了:

    1.表master.dbo.sysdatabases(master系统库)

      select name from master.dbo.sysdatabases

      name为字段名,查询数据库名(没有database()函数)

    2.表dbo.sysobjects

      select name from dbo.sysobjects where xtype='U'

      name为字段名,,查询表名(当前库下的dbo.sysobjects表记录着,U表示用户库,S表示系统库)

    3.表dbo.syscolumns

      select name from dbo.syscolumns where id=value

      name为字段名,id为字段名(记录表的id),所以在查表名是应该查它的id,当要查字段名是要通过id查找,表名行不通的,查数据时才要用到表名

 

Access数据库

  它并没有自带库,只能猜测表名的方式,获取数据

  比如:and exists(select*from admin)

  方法很多,不止一种

  当get到表名后,而无法猜到字段名时,可以通过偏移注入方式获取数据;

  同样,当其他类型数据库权限不够而无法查询通过查询自带库获取信息,可以通过这种偏移注入方法获取数据

 

Oracle数据库

   接触这类型的很少,不熟悉

  查数据库版本

    select banner from sys.v_$version where rownum=1

  查询表名

    select table_name from user_tables where rownum=1

    user_tables为当前用户的表

  查字段名

    select column_name from user_tab_columns where table_name=表名 and rownum=1

     user_tab_columns当前用户的字段表

  查第二个字段名

    select column_name from user_tab_columns where table_name=表名 and column_name<>查到的第一个字段名 and rownum=1

 

  oracle数据库可以参考https://www.freebuf.com/column/174974.html

转载于:https://www.cnblogs.com/gychomie/p/11215900.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值