免责声明任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具:明知他人从事危害网络安全的活动的不得为其提供技术支持、广告推广、支付结算等帮助。本文章是用于相互学习讨论不得用此方式进行违法活动否则产生的一切后果与本人无关。⼀、PHP 与数据库交互1. 完整示例代码?php// 第⼀步建⽴数据库连接拨号\$db_host 127.0.0.1; // 本地数据库地址\$db_user root; // 数据库账号\$db_pass root; // 替换为⾃⼰的密码\$db_name school; // ⽬标数据库名\$conn mysqli_connect(\$db_host, \$db_user, \$db_pass, \$db_name);if (!\$conn) {die(数据库连接失败: . mysqli_connect_error());}if(\$_POST){// 第⼆步接收⽤户输⼊登录⻚的账号密码\$name $_POST[name]; // POST⽅式密码不暴露在URL更安全\$pwd $_POST[password];// 第三步执⾏SQL查询漏洞根源\$sql SELECT * FROM users WHERE name\$name AND password\$pwd; \$result mysqli_query(\$conn, \$sql);// 第四步处理结果反馈登录状态if (mysqli_num_rows(\$result) 0) {\$user_info mysqli_fetch_assoc(\$result);echo 登录成功欢迎你 . \$user_info[name].你的身份证号是\$user_info[id_card].你的⼿机号是.\$user_info[phone];} else {echo 登录失败⽤户名或密码错误;}}// 关闭连接mysqli_close(\$conn);?!DOCTYPE htmlhtml langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title教务系统登录/title/headbodyform methodpost⽤户名input typetext namenamebrbr密\$nbsp;\$nbsp;码input typepassword namepasswordbrbrbutton typesubmit登录/button/form/body/html2. 交互核⼼四步⾛步骤代码核⼼操作作⽤说明第⼀步mysqli_connect(地址,账号,密码,库名)建⽴PHP与数据库的连接 die() 保证连接失败时直接终⽌并提示错误第⼆步\$_POST[name] / \$_POST[password]接收登录⻚⽤户输⼊的账号密码必须⽤POST⽅式密码藏在数据包不暴露在URL⽐GET安全第三步\$sql SELECT * FROM users WHERE name$name AND password\$pwd;mysqli_query(\$conn, \$sql)拼接SQL语句并执⾏是漏洞核⼼位置第四步mysqli_num_rows(\$result)判断是否查到匹配⽤户查到则登录成功反之失败⼆、SQL注⼊漏洞万能密码核⼼原理1. 漏洞根源核⼼问题代码\$sql SELECT * FROM users WHERE name\$name AND password\$pwd;● 直接将⽤户输⼊的 \$name / \$pwd 拼接到SQL语句的单引号中执⾏● 未检查/过滤特殊字符如 、 OR 、 # 等也未做转义处理● 系统默认⽤户输⼊“正常内容”但攻击者可输⼊恶意字符篡改SQL逻辑。2. 万能密码底层逻辑攻击者输⼊ 123 or 11 这类特殊字符实现3个关键操作1. 闭合原有SQL语句的单引号打破查询限制2. 添加 11 这类恒成⽴条件让查询条件永远为真3. 注释多余内容避免SQL语法错误。3. 篡改后的SQL语句示例原正常SQL SELECT * FROM users WHERE nameadmin AND password123篡改后SQL SELECT * FROM users WHERE nameadmin AND password123 or11→ ⽆论账号密码是否正确数据库都会返回所有⽤户信息代码判定“登录成功”实现免密绕过但是登录的是查询语句中查询的第⼀个⽤户。总结1. PHP与数据库交互核⼼分4步建⽴连接→接收输⼊→执⾏SQL→处理结果其中接收⽤户输⼊必须⽤POST⽅式保障基础安全2. SQL注⼊漏洞的核⼼是“直接拼接⽤户输⼊到SQL语句”未过滤特殊字符3. 万能密码的本质是篡改SQL查询逻辑让WHERE条件恒成⽴绕过密码验证。