文章总结: 文档讲解了SQL堆叠注入的原理,指出其通过分号一次执行多条语句,能突破联合注入仅查询的限制。结合CTF赛题,展示了在关键字被过滤时,利用堆叠注入枚举库表结构,并借助rename和alter修改表名与字段,绕过查询限制读取flag的过程。文章强调结构改造是解决数据读取限制的有效手段,并提醒注意权限控制,末尾附带团队招募与培训广告。 综合评分: 65 文章分类: WEB安全,CTF,漏洞分析,渗透测试
SQL堆叠注入速读:从一道赛题到实战思路
原创
油漆工 油漆工
C4安全
2026年3月23日 17:06 江苏
一句话理解堆叠注入
在 SQL 中,分号(;)表示一条语句结束
而堆叠注入就是把多条语句拼在一次请求里执行,从而突破只允许“查询”的限制,执行任意 SQL 语句。
与联合注入(union)不同:union 只能拼接查询语句,堆叠注入可以执行任意语句(如删表、改表)。
赛题切入:为什么会想到堆叠注入?
题目过滤了大量查询关键字,常规查询受限,于是将目光转向“多语句执行”的可能性。
典型示例:
- 用户输入:1; DELETE FROM products
- 后端拼接:SELECT * FROM products WHERE productid=1; DELETE FROM products
第一条查询能返回数据,第二条语句直接执行破坏性操作——这就是堆叠注入的威力。
关键探测语句(信息枚举)
当你能“多语句”执行后,就可以枚举数据库与表结构:
- 查看库:
1';show databases;#
- 查看指定库的表:
1';show tables from supersqli;#
- 查看表字段:
1';show columns from __;#
结构判断:为什么锁定 words 表?
题目默认查询返回“数字 + 字符串”,结合表结构推断默认查询来自 words 表(id + data)。
但目标表(1919810931114514)藏了 flag,无法直接读。
改表思路:rename + alter 拿到 flag
由于题目未禁用 rename 与 alter,可以修改表结构与表名把目标表“伪装成默认表”。
步骤简述:
- 把 words 改名为 words1
- 把数字名表改成 words
- 把 flag 字段改成 id,让默认查询读取到 flag
payload:
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
最后用 1′ or 1=1# 拉出全部内容,即可看到 flag。
要点总结
- 堆叠注入 ≠ union 注入,前者可执行任意语句
- 绕过过滤时,堆叠注入是重要备选思路
- 结构改造(rename/alter)常是“读不到数据”时的解法
- 实战中要注意权限、过滤与数据库引擎差异
安全研究需在授权范围内进行。生产系统请务必做好输入过滤与最小权限控制。
感兴趣的师傅可以公众号私聊我进团队交流群,咨询问题,hvv简历投递,nisp和cisp考证都可以联系我
内部src培训视频,内部知识圈,可私聊领取优惠券,加入链接:https://wiki.freebuf.com/societyDetail?society_id=184
安全渗透感知大家族
(新人优惠券折扣20.0¥,扫码即可领取更多优惠)
加入团队、加入公开群等都可联系微信:yukikhq,搜索添加即可
END
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:C4安全 油漆工 油漆工《SQL堆叠注入速读:从一道赛题到实战思路》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论