CTF-Web学习笔记:SQL注入篇

目录

​​引言​​

​​一、SQL注入的基础概念​​

1. 什么是SQL注入?

2. SQL注入的成因

​​二、CTF中常见的SQL注入类型​​

1. 按参数类型分类

2. 按注入方式分类

3. 其他进阶类型

​​三、CTF实战技巧:从找注入点到拿Flag​​

1. 如何判断是否存在注入?

2. 快速确定数据库类型

3. 常用工具辅助

4. 绕过WAF(Web应用防火墙)

​​四、CTF题目示例:一道报错注入实战​​

题目背景

解题步骤

​​五、总结与提升​​


引言​

在CTF(Capture The Flag,夺旗赛)的Web安全赛道中,​​SQL注入(SQL Injection)​​ 是最经典、最常见的考点之一。它利用的是应用程序对用户输入的SQL语句未做严格过滤的漏洞,攻击者可以通过构造恶意输入,篡改原有SQL逻辑,从而获取数据库敏感信息(如用户密码、管理员账号)、执行任意SQL命令,甚至控制整个数据库服务器。

对于刚入门的CTF选手来说,掌握SQL注入的核心原理、常见类型及实战技巧,是突破Web题目的关键。本文将结合CTF场景,从基础概念到实战技巧,带你系统梳理SQL注入的“攻防之道”。


​一、SQL注入的基础概念​

1. 什么是SQL注入?

SQL注入的本质是​​用户输入的数据被直接拼接到SQL语句中执行​​,导致攻击者可以操控SQL的执行逻辑。例如,一个登录验证的SQL语句原本是:

SELECT * FROM users WHERE username='admin' AND password='123456';

如果后端代码直接将用户输入的usernamepassword拼接到SQL中(未做任何过滤),攻击者输入username=' OR '1'='1password=' OR '1'='1,拼接后的SQL变为:

SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1';

此时'1'='1'恒为真,攻击者无需真实密码即可登录。

2. SQL注入的成因
  • ​代码层漏洞​​:后端未对用户输入进行合法性校验(如未使用预编译语句、未转义特殊字符)。
  • ​信任用户输入​​:将用户输入的数据直接作为SQL语句的一部分执行(如动态拼接SQL)。

​二、CTF中常见的SQL注入类型​

CTF题目中,SQL注入的考察形式灵活多样,但核心思路都是“构造恶意输入,触发预期外的SQL行为”。以下是最常见的几类:

1. 按参数类型分类
  • ​数字型注入​​:参数为数字(如id=1),无需引号包裹。
    示例:http://target.com/user?id=1 → 构造id=1 OR 1=1
  • ​字符串型注入​​:参数为字符串(如username=admin),需用引号包裹(单/双引号)。
    示例:http://target.com/login?user=admin&pass=123 → 构造user=admin' --(注释后续语句)。
2. 按注入方式分类
  • ​报错注入​​:利用数据库的错误回显机制,通过构造非法SQL语句使数据库抛出错误信息,从中提取数据。
    常用函数:

    • MySQL:updatexml(1, concat(0x7e, (SELECT database())), 1)updatexml的第二个参数需为XML格式,否则报错并回显内容);
    • MySQL:extractvalue(1, concat(0x7e, (SELECT user())))extractvalue类似,利用XPath解析错误);
    • SQL Server:DBCC TRACEON(3604); PRINT (SELECT password FROM users)(输出到错误日志)。
  • ​盲注(Blind Injection)​​:数据库不会直接回显错误或数据,需通过“条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AAA bit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值