(一)SQL注入基本语法

SQL

database➡️table➡️column➡️键值(具体数据)
即:库➡️表➡️列(语句中最底层)

  • select

查询字符串(常量):select '字符串','字符串2'
最简单的查询语句:select 列名1,列名2 from 表名
默认返回主键

  • limit

限制返回行数
select 列名1,列名2 from 表名 limit 起始位置,条数
eg.
select apple from banana limit 0,2 #查询前两行

  • where

条件返回数据
select 列名1,列名2 from 表名 where 条件
eg.
select apple,banana from fruit where banana = 1
回显

apple banana
0 1
  • union

将多条查询结果联合起来
select 列名1,列名2 union select 列名2,列名4
🌟union 要求前后查询的列数必须相同(用order by查询)

  • order by

select 列名1, 列名2 order by i(根据第i列排序,从1开始)
🌟若i大于查询列数,网页会报错,所以可以利用该表达式查询服务器后台查询了几列数据

  • alter

  • alter table 表名 add 字段名 字段类型
  • alter table 表名 rename to 修改后表名 (修改表名)
  • alter table 表名 change 当前列名 修改后列名 字段类型; (修改列名)
    eg.
    ALTER TABLE users ADD phone VARCHAR(20);

绕过敏感表名/列名
eg.

alter table flag rename to test_table;  
alter table words add id int unsigned not Null;     
alter table words change flag data varchar(100);

🌟alter无法在查询语句中嵌套使用,所以一定要后台数据库支持堆叠注入(mysqli_multi_query),才能用‘;’隔开查询语句,然后进行添加

  • handle

(MySQL/MariaDB 特有)

  1. 打开表
    HANDLER users OPEN (as 别名);
  2. 读取第一行数据
    HANDLER users READ FIRST;
  3. 读取下一行数据
    HANDLER users READ NEXT;
  4. 关闭表
    HANDLER users CLOSE;
  • 绕过select
  • 绕过敏感列名
HANDLER `column` OPEN;
HANDLER `column` READ NEXT;
posted @ 2026-05-16 19:23  L0gy  阅读(0)  评论(0)    收藏  举报