sql,1-4个人问题和知识点汇总

📅 2026/8/12 17:30:02
sql,1-4个人问题和知识点汇总
id 是查询参数分隔符后端sql查询用来筛选记录的条件id1是查询id1的那行数结束都要写%23或者##以后的内容不执行sqlz注入漏洞的攻击的目标就是窃取数据数据源来自系统表information_schema.tablesinformation_schema.tables 这张系统表里有很多内置字段table_name表的名字table_schema数据库库名我们现在的目标找出 security 库里面所有的表叫什么所以取这张表的 table_name 字段group_concat() 把多个表名拼接成一行输出到回显位。column_name代表字段列的名字查库名database() → 得到 security查表名group_concat(table_name) → 得到 users 等表查字段名group_concat(column_name) → 得到 username,password脱数据直接查询 username,password拿到账号密码group_concat(xxx)括号里面填什么取决于你想要拿系统表里的哪一个字段。拿表名就填table_name拿列名就填column_name。UNION 的作用把两条 select 查询的结果合并到一起。所以UNION 后面必须再接一个完整的 SELECT。第一条 select正常查 usersid-1 查不到任何东西第二条 select我们自己写的查询用来读系统库拿表名union 把两个查询结果合并页面就显示第二条 select 的输出记住硬性规则union 前后两个 select返回的列数量必须一模一样。前面 3 列后面 select 后面就要写 3 个东西。为什么第一题单引号测试时候要用#第四题双引号不用而且双引号是直接报错才认为是有的1存疑与前面是同类符号才有可能跳出原来的语法只有和容器一模一样的引号才能打破字符串、产生报错实现注入2模拟 MySQL 一行一个字符读取解析 SQL读到 → MySQL开启字符串模式接下来所有字符全部当成普通文本直到再次遇到 读到 1 → 普通文本读到你输入的 → MySQL找到结束引号字符串到此终止退出字符串模式继续向后读取下一个字符后端自带的 现在状态已经不在字符串里面了突然单独出现一个游离的 MySQL 语法规则单独放一个无配对的引号属于非法语法 → 抛出报错url就是网页地址记录访问的服务器位置、资源路径过滤就是后端程序员把输入语句拼金sql语句前先检查并处理特殊字符让他没法闭合原本字符串sql是结构化查询语言专门用来做数据交互后端就是用拼接好的sql语句区查询的把查询逻辑插入执行语句就拿到控制权怎么过过滤查字段原因防护时候要把单引号转义成两个双引号要么直接过滤掉这些胡改变sql结构的字符