学习复盘:SQL 注入原理、类型、手工注入及绕过防御

张开发
2026/5/14 22:34:34 15 分钟阅读

分享文章

学习复盘:SQL 注入原理、类型、手工注入及绕过防御
一、前言今天系统继续学习了 Web 安全核心漏洞SQL 注入主要的内容就是手动注入SQL 注入是Web 渗透最基础也最重要的漏洞几乎所有动态网站都曾出现过是学习网安很重要的一部分二、理解SQL注入1. 简单理解 SQLSQL 是操作关系型数据库的语言常见库MySQL、Oracle、SQL Server、Access分关系型数据库和非关系型NoSQLNoSQL虽然为非关系型但是也存在注入漏洞2. 什么是 SQL 注入原理把恶意 SQL 语句插入请求参数URL、表单、Cookie、UA、Referer服务端未做过滤直接拼接 SQL 执行导致数据库泄露关键闭合原有 SQL 语句构造恶意新语句三、SQL 注入的真实危害泄露数据库隐私账号、密码、手机号、用户数据绕过登录验证直接进后台篡改网页、网站挂马恶意操作数据库删库、改管理员账号读取服务器文件、写入木马 GetShell远程执行系统命令、控制服务器四、SQL 注入常见分类1. 按数据类型分数字型id1无需单引号闭合字符型usernameadmin需要单引号闭合2. 按回显方式分联合查询注入页面有直接回显位报错注入利用extractvalue报错带出数据布尔盲注页面分正常报错两种状态通过暴力破解获取数据时间盲注页面无变化用sleep()睡觉判断对错五常见函数报错函数extractvalue、updatexml、exp、GTID_SUBSET()等。截取函数left、mid、substrsubstring、substrB。判断函数if、case when。其他函数ascii、length。数据库常见函数六、MySQL 手工注入核心函数截取substr()/mid()/left()截取字符爆破数据报错extractvalue()、updatexml()利用错误爆数据判断if()、case when()用于盲注爆破数据长度length()判断长度数据库信息database()、user()、version()查库名、用户、版本聚合函数group_concat()一次性爆出所有查询数据七、完整注入流程测试是否存在注入判断字段数找回显示位爆所有数据库 → 爆指定库表名 → 爆表字段 → 爆账号密码数据八、SQLMap脚本工具使用python sqlmap.py作用自动检测、自动 SQL 注入拿数据常用命令指定 URL、抓包扫描、查库-dbs、查表-D ... --tables、查字段-D ... -T ,,, -columns、导出数据-D ... -T ,,, -C ~~~ --dump相比常规手注使用脚本更加迅速。九、结尾总结今天完整过了 SQL 注入从原理→分类→手法→绕过全流程手工注入是基础SQLMap 是工具先懂手工再用工具后续多在 sqli-labs、DVWA 靶场练习巩固各类注入和绕过思路

更多文章