![一、Web 方向:[极客大挑战 2019] EasySQL](http://pic.xiahunao.cn/yaotu/一、Web 方向:[极客大挑战 2019] EasySQL)
1. 题目概述本题是 SQL 注入的入门经典题型靶场环境为一个用户登录页面无其他提示信息目标是通过 SQL 注入绕过登录验证最终获取 Flag。2. 解题思路登录框是 SQL 注入的高频场景核心思路是通过构造特殊输入闭合后台的 SQL 查询语句使查询条件恒成立从而绕过身份验证。首先推测后台 SQL 查询逻辑sqlSELECT * FROM users WHERE username $username AND password $password用户名和密码变量均用单引号包裹属于单引号字符型注入。我们可以先通过单引号测试闭合方式再构造恒真条件完成绕过。3. 详细步骤步骤 1验证注入点在用户名输入框输入单引号密码填写任意内容点击登录。 页面返回 SQL 语法错误提示确认存在单引号闭合的 SQL 注入漏洞。步骤 2万能密码绕过利用or 11构造恒真条件并用#注释掉后续 SQL 语句。 在用户名输入框输入以下内容密码填写任意值如 123点击登录plaintext or 11 #原理说明代入后实际执行的 SQL 语句为sqlSELECT * FROM users WHERE username or 11 # AND password 123#后的内容被数据库注释查询条件 or 11恒为真因此会返回所有用户信息成功绕过登录验证页面直接显示 Flag。进阶联合查询脱库若需完整掌握注入流程可通过联合查询逐层获取数据判断字段数输入 order by 3 #报错 order by 2 #正常确认查询结果有 2 个字段。定位回显位输入 union select 1,2 #确认两个字段均会回显到页面。查询数据库名 union select 1,database() #得到库名geek。查询表名与字段名借助information_schema系统库逐步查表、查字段最终读取 Flag 字段内容。4. Flagplaintextflag{SQL_1nj3ct10n_1s_s0_3asy}5. 知识点总结字符型 SQL 注入的闭合方式判断方法万能密码绕过登录的底层原理联合查询注入的标准流程猜字段数、找回显位、脱库取数据