一、题目简介题目名称simple_login题目分值150分题目环境PHPMySQL网页登录界面题目描述普通用户无法登录后台后台管理员账号存在漏洞请尝试绕过登录验证获取页面隐藏Flag。适配水平掌握PHP SQL注入原理、万能密码绕过逻辑区别于入门纯签到题需要理解语句执行逻辑二、核心考点MySQL基础语法与查询语句执行逻辑无过滤字符型SQL注入漏洞万能密码绕过登录验证原理PHP后端简单漏洞成因未做输入过滤、参数拼接查询三、漏洞原理分析本题后端采用原生PHP拼接SQL查询语句未对用户输入的账号、密码参数做任何过滤、转义处理。后端核心查询逻辑如下$user $_POST[username]; $pwd $_POST[password]; $sql select * from admin where username$user and password$pwd; $result mysql_query($sql); if($result){ // 登录成功输出Flag }由于参数直接拼接SQL语句用户可控输入会改变原有查询逻辑。MySQL中or 11为恒真语句且单引号可以闭合原有SQL语句的字符串实现逻辑绕过无需正确账号密码即可登录后台。四、详细解题步骤1. 环境探测打开题目链接页面呈现简洁的管理员登录界面包含用户名、密码两个输入框和登录按钮无多余提示。尝试输入任意普通账号密码均提示登录失败确认无弱口令漏洞优先考虑SQL注入绕过。2. 构造注入Payload根据字符型注入特性用户名输入框输入万能注入语句密码框随意输入内容用户名 or 11 #密码123456任意字符即可3. 语句逻辑解析输入后拼接的完整SQL语句为select * from admin where username or 11 # and password123456其中单引号闭合了原用户名字符串or 11构造恒真条件#注释掉后续所有SQL语句彻底绕过密码验证逻辑4. 获取Flag点击登录后页面跳转成功直接展示题目FlagCTF{5ql_1nj3ct_bas1c_2026}五、题目总结与防御方案本题是CTF进阶训练中最经典的基础注入题核心考察对SQL语句执行逻辑的理解而非复杂工具利用。很多同学入门仅会套用Payload忽略原理本题重点强化字符串闭合逻辑恒真注释截断的注入核心思路。安全防御方案预处理语句使用PDO预处理或mysqli预处理输入过滤对用户输入进行转义过滤禁用特殊字符限制输入中的SQL关键字关闭错误回显生产环境关闭MySQL错误信息显示杜绝SQL拼接避免直接拼接用户输入到SQL语句六、扩展思考除了 or 11 #这种经典Payload还可以尝试以下变种 or 11 or 11 -- admin -- or aa这些Payload的原理都是通过构造恒真条件使WHERE子句始终返回true从而绕过身份验证。