SQLi-labs学习sql注入(四)
💡
原文中文,约3200字,阅读约需8分钟。
📝
内容提要
本文介绍了在sqli-labs第11关中,通过SQL注入攻击获取用户信息的过程。利用特定的SQL语句构造,结合单引号和注释符号,成功提取数据库名、表名及字段名。后续关卡继续使用类似方法进行注入测试,强调了闭合串和布尔盲注的应用。
🎯
关键要点
- 环境为Windows 7,通过phpstudy2018部署的sqli-labs。
- 第11关的SQL源码为SELECT语句,包含用户名和密码。
- 通过输入1和1测试,发现页面提示登录失败,说明SQL语句执行正常。
- 输入单引号和双引号测试,发现单引号会导致语法报错,判断后台代码中是单引号闭合。
- 构造恒真的表达式1' or 1=1 #来获取所有用户数据。
- 使用联合注入1' union select 1,database() #提取数据库名。
- 通过构造SQL语句提取表名和字段名,使用information_schema.tables和information_schema.columns。
- 第12关与第11关类似,主要是闭合串的变化。
- 第13关通过报错信息判断闭合串,并使用updatexml进行注入。
- 第14关与第13关相似,主要是闭合串的变化。
- 第15关使用布尔盲注,输入1' or 1 -- a进行测试。
- 文章提供的技术信息仅供参考,读者需遵守网络安全法,作者不承担责任。
❓
延伸问答
如何通过SQL注入获取用户信息?
可以通过构造恒真的表达式如1' or 1=1 #来获取所有用户数据,利用SQL注入技术提取用户名和密码。
在sqli-labs第11关中,如何提取数据库名?
可以使用联合注入语句1' union select 1,database() #来提取数据库名。
为什么输入单引号会导致SQL语法报错?
输入单引号会干扰SQL语句的解析,导致语法错误,说明后台代码中是单引号闭合。
第12关与第11关有什么相似之处?
第12关与第11关类似,主要是闭合串的变化,其他操作步骤相似。
如何使用布尔盲注进行SQL注入?
可以通过输入1' or 1 -- a进行测试,判断页面反馈来进行盲注。
在进行SQL注入时,如何提取表名和字段名?
可以使用信息架构表,如information_schema.tables和information_schema.columns,通过构造SQL语句提取表名和字段名。
➡️