声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 397,阅读大约需 2 分钟
Yakit SQL注入测试插件
-
• 被动sql注入检测 64aaa3c9986a3a62ce90a9c58925f831.png
该插件有两种检测方式,一种是根据响应体中的报错信息匹配关键词,一种是根据响应包的返回时间判断是否存在SQL注入
常见的SQL注入报错关键词
Microsoft OLE DB Provider for ODBC Drivers error
You have an error in your SQL syntax
ORA-00933: SQL command not properly ended
Microsoft SQL Native Client error
Query failed: ERROR: syntax error at or near
You have an error in your SQL syntax
MySQL Error: 1064
mysql error with query
SQL syntax error
PostgreSQL query failed: ERROR: parser: parse error
Warning: mysql_fetch_array
Warning: mysql_num_rows
Warning: mysql_query
Warning: mysql_fetch_assoc
Warning: mysql_result
You have an error in your SQL syntax
插件的payload的如下:
如果是根据报错信息匹配的,基本上没有误报。但是这种存在局限性,那就是web服务可以把报错信息拦截,返回自定义的报错或者返回空。这样,报错信息检测就失效了。
插件的解决办法是通过sleep函数延时。
但是,这也存在一个问题,插件并未考虑到如果web服务本身响应就很慢的情况,哪怕没有插入SQL语句,相应时间也在5s的情况。这样就会出现误报的情况。
渗透测试的真实经历,不知道项目是怎么过的性能测试。
添加,如果提示错误,不用在意,不影响使用
ttt_raw, rrr_raw, err_raw = poc.HTTPEx(req, poc.https(isHttps), poc.retryTimes(3), poc.retryInStatusCode(502))
time_raw = ttt_raw.TraceInfo.GetServerDurationMS()
两个时间相减,结果可能更准确一些
官方的插件
参考链接
-
• https://yaklang.com/products/Plugin-repository/Plugin-repository -
• https://yaklang.com/products/Plugin-repository/yak-script-system
原文始发于微信公众号(进击的HACK):通过Yakit测试SQL注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论