SQL 注入 Low(1):字符型注入与手工测试流程

第一部分:SQL 注入概述 什么是 SQL 注入 SQL 注入(SQL Injection)是将恶意的 SQL 语句片段插入到应用程序的输入参数中,让后端数据库误以为这是合法的查询指令并执行它。 简单说:你的输入被当作代码执行了。 正常请求: 浏览器 → 输入 user_id=1 → 服务器 → SQL: SELECT * FROM users WHERE id='1' → 返回 admin 注入请求: 浏览器 → 输入 user_id=1' or '1'='1' # → 服务器 → SQL 被篡改 → 返回全部用户数据 为什么 SQL 注入能成立 三个条件同时满足: 用户输入直接拼接到 SQL 语句中(没有参数化查询) 输入中的特殊字符('、"、--、#)没有被转义或过滤 数据库把拼接后的字符串当作 SQL 执行 这三个条件缺一个,注入就不成立。 注入的本质:脱离数据上下文,进入代码上下文 SELECT * FROM users WHERE id = '1' │ │ │ └── 后引号(后端写死的) └── 前引号(后端写死的,你的输入从它后面开始) -- 正常输入时,你的数据在引号里——是"数据" -- 你的输入里包含 ' 后,你提前闭合了引号——后面的内容进入了"代码"区域 -- 这就是注入的本质 什么是 Payload Payload = 攻击载荷 = 你精心构造的那段输入字符串。 ...

August 4, 2026 · 5 min · 1027 words

SQL 注入基础:字符型注入与手工测试流程

第一部分:SQL 注入概述 什么是 SQL 注入 SQL 注入(SQL Injection)是将恶意的 SQL 语句片段插入到应用程序的输入参数中,让后端数据库误以为这是合法的查询指令并执行它。 简单说:你的输入被当作代码执行了。 正常请求: 浏览器 → 输入 user_id=1 → 服务器 → SQL: SELECT * FROM users WHERE id='1' → 返回 admin 注入请求: 浏览器 → 输入 user_id=1' or '1'='1' # → 服务器 → SQL 被篡改 → 返回全部用户数据 为什么 SQL 注入能成立 三个条件同时满足: 用户输入直接拼接到 SQL 语句中(没有参数化查询) 输入中的特殊字符('、"、--、#)没有被转义或过滤 数据库把拼接后的字符串当作 SQL 执行 这三个条件缺一个,注入就不成立。 注入的本质:脱离数据上下文,进入代码上下文 SELECT * FROM users WHERE id = '1' │ │ │ └── 后引号(后端写死的) └── 前引号(后端写死的,你的输入从它后面开始) -- 正常输入时,你的数据在引号里——是"数据" -- 你的输入里包含 ' 后,你提前闭合了引号——后面的内容进入了"代码"区域 -- 这就是注入的本质 什么是 Payload Payload = 攻击载荷 = 你精心构造的那段输入字符串。 ...

August 4, 2026 · 5 min · 1027 words