sql注入入门 📅 2026/7/1 15:39:04 1. 定义SQL 注入SQL Injection简称 SQLi是Web 层最经典高危漏洞核心成因 网站后端直接把用户可控输入拼接进 SQL 语句执行没有过滤、转义、预处理防护。攻击者构造特殊 SQL 语句片段插入输入框篡改原有数据库查询逻辑实现非法查数据、删库、拿服务器权限等恶意操作。简单一句话用户输入被当成 SQL 代码执行了本应只当普通文本。2. 漏洞产生根本条件缺一不可用户可控输入URL 参数、登录账号密码框、Cookie、请求头、搜索框等用户能随便改后端代码直接字符串拼接 SQL没有参数化查询预编译输入未做转义、过滤、特殊字符转义处理。3. 正常逻辑 vs 注入恶意逻辑举例登录页面最典型正常后台 PHP 逻辑危险写法$name $_GET[user]; $pwd $_GET[pass]; // 直接拼接输入到SQL $sql select * from user where username$name and password$pwd;正常用户输入账号admin 密码123456 拼接后 SQLselect * from user where usernameadmin and password123456只会查询 admin 账号验证密码。攻击者注入恶意输入账号输入admin or 11 --密码随便填 111 拼接后 SQL 变成select * from user where usernameadmin or 11 -- and password111拆解作用闭合前面原有单引号破坏原有语句结构or 11永真条件整条 where 永远成立--SQL 注释符把后面剩余代码全部注释失效。 最终效果无需正确密码直接登录后台管理员账号。4. SQL 注入能做什么危害泄露全部数据库数据用户账号、手机号、身份证、订单、后台管理员密码篡改数据修改网站价格、管理员权限删除数据drop table 表名直接清空数据表读取服务器本地文件load_file、写入后门木马outfile拿下服务器内网探测、提权横向渗透整个服务器集群。5. 常见注入分类联合查询注入Union 注入页面有数据回显用 union select 拼接查询直接爆出库、表、字段数据。布尔盲注页面无数据但返回两种不同页面正常 / 报错通过判断真假逐字符猜数据库内容。时间盲注页面完全无差异用 sleep () 延时函数根据页面加载延迟判断字符对错。报错注入利用 updatexml/extractvalue 等函数让数据库报错时带出查询数据。Cookie 注入、POST 注入、HTTP 头注入 注入点不在 URL在 Cookie、POST 表单、User-Agent、Referer 等请求头。