mysql数据关联分析_SQL注入关联分析

本文深入探讨SQL注入攻击,包括概念、分类、利用工具SQLMAP的使用,以及源码分析。同时,介绍了手工注入的场景与语句,并提供了黑盒测试与代码审计的方法。最后,讨论了安全加固策略和SQL注入与其他功能点的关联,旨在提升Web应用的安全性。
摘要由CSDN通过智能技术生成

在Web攻防中,SQL注入绝对是一个技能的频繁项,为了技术的成熟化、自动化、智能化,我们有必要建立SQL注入与之相关典型技术之间的关联规则。在分析过程中,整个规则均围绕核心词进行直线展开,我们简单称之为“线性”关联。以知识点的复杂性我们虽然称不上为神经网络,但它依然像滚雪球般对知识架构进行完善升级,所以也可称之为雪球技术。

本文以SQL注入为核心,进行资料信息整合性解读,主要目的有:

为关联分析这门科学提供简单认知;

为初级安全爱好学习者提供参考,大牛绕过;

分析各关键点的区别与联系;

安全扫盲。

本文结构如下:

be90b6ddb9423dc336bfcd45676dc8df.png

PS:文章中使用了N多表格形式,主要是为了更好的区别与联系,便于关联分析及对比。

0x01 基本科普

1.1  概念说明

说明:通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。http://wiki.wooyun.org/web:sql

影响:数据库增删改查、后台登录、getshell

修复:

使用参数检查的方式,拦截带有SQL语法的参数传入应用程序

使用预编译的处理方式处理拼接了用户参数的SQL语句

在参数即将进入数据库执行之前,对SQL语句的语义进行完整性检查,确认语义没有发生变化

在出现SQL注入漏洞时,要在出现问题的参数拼接进SQL语句前进行过滤或者校验,不要依赖程序最开始处防护代码

定期审计数据库执行日志,查看是否存在应用程序正常逻辑之外的SQL语句执行

1.2  注入分类

1)  按照数据包方式分类

i.  Get post cookie auth

2)  按照呈现形式

i.  回显型注入

i)  Int string search

ii.  盲注

i)  Error bool time

iii.  另类注入

i)  宽字节注入

ii)  http header 注入

iii)  伪静态

vi)  Base64变形

神器解读

2.1  何为神器

SQLMAP

使用方法,参见乌云知识库。

1.  sqlmap用户手册

2.  sqlmap用户手册[续]

3.  sqlmap进阶使用

Tamper 概览

脚本名称

作用

apostrophemask.py

用utf8代替引号

equaltolike.py

like  代替等号

space2dash.py

绕过过滤‘=’ 替换空格字符(”),(’  – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)

greatest.py

绕过过滤’>’ ,用GREATEST替换大于号。

space2hash.py

空格替换为#号 随机字符串 以及换行符

apostrophenullencode.py

绕过过滤双引号,替换字符和双引号。

halfversionedmorekeywords.py

当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论

space2morehash.py

空格替换为 #号 以及更多随机字符串 换行符

appendnullbyte.py

在有效负荷结束位置加载零字节字符编码

ifnull2ifisnull.py

绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’

space2mssqlblank.py

空格替换为其它空符号

base64encode.py

用base64编码替换

space2mssqlhash.py

替换空格

modsecurityversioned.py

过滤空格,包含完整的查询版本注释

space2mysqlblank.py

空格替换其它空白符号(mysql)

between.py

用between替换大于号(>)

space2mysqldash.py

替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)

multiplespaces.py

围绕SQL关键字添加多个空格

space2plus.py

用+替换空格

bluecoat.py

代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like

nonrecursivereplacement.py

取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters

space2randomblank.py

代替空格字符(“”)从一个随机的空白字符可选字符的有效集

sp_password.py

追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾

chardoubleencode.py

双url编码(不处理以编码的)

unionalltounion.py

替换UNION ALL SELECT UNION  SELECT

charencode.py

url编码

randomcase.py

随机大小写

unmagicquotes.py

宽字符绕过 GPC addslashes

randomcomments.py

用/**/分割sql关键字

charunicodeencode.py

字符串  unicode 编码

securesphere.py

追加特制的字符串

versionedmorekeywords.py

注释绕过

space2comment.py

Replaces space  character (‘ ‘) with comments ‘/**/’

一些妙用:

1.  避免过多的错误请求被屏蔽  参数:--safe-url,--safe-freq

2.  二阶SQL注入  参数:--second-order

3.  从数据库服务器中读取文件  参数:--file-read

4.  把文件上传到数据库服务器中  参数:--file-write,--file-dest

5.  爬行网站URL  参数:--crawl

6.  非交互模式  参数:--batch

7.  测试WAF/IPS/IDS保护  参数:--identify-waf

8.  启发式判断注入  参数:--smart(有时对目标非常多的URL进行测试,为节省时间,只对能够快速判断为注入的报错点进行注入,可以使用此参数。)

9.  -technique

B :基于Boolean的盲注(Booleanbased blind)

Q :内联查询(Inline queries)

T :基于时间的盲注(time based blind)

U :基于联合查询(Union query based)

E :基于错误(error based)

S : 栈查询(stack queries)

2.2  源码精读

流程图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值