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语句提取表名和字段名。

➡️

继续阅读