第31篇:一系列操作使sqlmap识别一个奇葩的延时注入点并绕waf的艰难过程

如题所述

在一项渗透测试项目中,遇到了一个非典型的SQL延时注入问题,最初sqlmap未能识别。客户坚持要在测试环境中获取实际数据来确认漏洞,ABC_123在一系列操作后,成功让sqlmap识别并获取了数据,这个过程可能对大家有所启发。

在研究生期间,深入研读sqlmap手册是提升理解的关键,反复阅读手册有助于理解其功能和参数配置。

经过试验,这个漏洞的特点在于只能用uid=sleep(5)形式的payload引发延时,且需要避开web应用对用户输入的严格过滤,如单引号、逻辑运算符等。sqlmap在常规配置下无法识别。首先,waf或应用程序的过滤机制需要通过tamper脚本来绕过;其次,sleep函数不能直接连接逻辑词;最后,即使延时时间很短,如1秒,也会导致sqlmap无法有效插入注入语句。

为让sqlmap识别,ABC_123尝试使用if语句和*号,构造如uid=if(1=1 and 1=1,sleep(5),1)的形式。然后使用space2comment.py和between.py脚本处理过滤问题,尽管如此,仍需调整sleep时间(如设置为33秒)并增加相关参数,如--time-sec=5、--risk=3、--level=3,最终形成复杂的sqlmap命令以获取数据。

虽然猜解表名因延时注入速度慢,但通过挂载字典,可以提升枚举速度。在成功获取数据库名、表名和字段后,sqlmap语句变得更复杂。

总结来说,深入理解sqlmap及其参数至关重要,预先设计复杂的if或case语句能帮助识别特殊注入点。此外,熟悉网络安全技术,包括渗透测试方法,将大大提高工作效率。保持关注,每周分享的网络安全技术内容不容错过。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜