SQL注入基础知识

本文详细介绍了SQL注入的不同类型,包括基于响应、数据类型和影响程度的分类,以及表单域、cookie和服务器变量的注入点。同时,讨论了系统函数如version()、user()在注入中的作用,以及字符串连接函数和union操作符的运用。文章还举例说明了SQL逻辑运算和注入流程,提供了猜数据库、表和列的内容的方法。
摘要由CSDN通过智能技术生成

一、注入的分类

1.基于服务器收到的响应

  • 基于错误的SQL注入
  • 联合数据类型
  • 堆查询注入
  • SQL盲注(时间,布尔,报错)

2.基于处理输入的SQL查询(数据类型)

  • 字符串
  • 数字或整数

3.基于程度和顺序的注入(哪里受了影响)

  • 一阶注入
  • 二阶注入
    一阶注入直接对web产生影响,二阶注入间接对web产生影响

4、基于注入点位置

  • 表单域的位置注入
  • cookie注入
  • 通过服务器变量(基于头部信息的注入)

二、系统函数

  • version()—mysql的版本号
  • user()—用户名
  • database()—数据库
  • @@datadir—数据库路径
  • @@version_compile_os—操作系统版本号

1.字符串连接函数

  • concat(str1,str2,....)没有分割符的连接字符串
  • concat_ws(separet,str1,str2...)有分割符的连接字符串
  • group_concat(str1,str2...)连接一个组的所有字符串并用逗号隔开

2.一般用于尝试的语句

  • --+可用#来代替#编码后的结果是%23
  • or 1=1–+
  • ’ or 1=1–+
  • " or 1=1–+
  • ) or 1=1–+
  • ') or 1=1–+
  • ") or 1=1–+
  • ")) or 1=1–+
    一般的代码格式为:
 $id=$_GET['id']
 $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

一般考虑闭合前面的或者闭合后面的,一般采用两种思想闭合后面的引号或者注释掉,注释采用
--+或#(%23)

3.union操作符的介绍

union操作的符用于合并两个或多个select语句,两个语句的操作符需要拥有相同的列和数据类型。
SQL UNION语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name

注释:默认选取不重复的值,如果想要重复的值使用union all

SQL 中的逻辑运算

举出一个例子进行说明:

select *from spirt where users="hello" and password="" or 1=1--+

and的优先级高于or,users and password =false而or 1=1恒为真。所以结果就恒为真了。
在这里插入图片描述

  1. select *from user where id=1 and 1=1;
  2. select *from user where id=1 && 1=1;
  3. select *from user where id=1 & 1=1;
    面1和2是一样的,3是按位相与。(&的优先级大于=)

注入流程

在这里插入图片描述
以下简述mysql的一些基本操作,用来检查数据库中的基本内容信息。

show databases;//检查有哪些数据库
use security;//使用security数据库
show tables;//查看security数据库中有哪些表
desc mails;//查看这个表的结构

mysql中有一个information_schema,存储着所有的数据库的相关信息。
一般我们利用该表可以进行一次完整的注入。
猜数据库

select schema_name from information_schema.schemata

猜某库的数据表

selece table_name from information_schema.tables where  table_schema="";

猜某表对所有列

select column_name from information_schema.columns where table_name="";

获取某列的内容

select *** from ***;

总结

原谅我这一生不羁放荡来自由。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值