WEB安全

mysql精讲注入权限及防注入

字号+ 作者:帝王帝王 来源:转载 2016-11-25 09:51 我要评论( )

学习mysql注入 我们一定要了解mysql数据库 这是必须的 mysql是一个开放源码的小型关联式数据库管理系统,开发者为瑞 典mysql ab 公司。目前mysql被广泛的应用在int......

    学习mysql注入 我们一定要了解mysql数据库 这是必须的


mysql是一个开放源码的小型关联式数据库管理系统,开发者为瑞 典mysql ab 公司。目前mysql被广泛的应用在internet上的中小型网站中。由于体积小,速度快,总体拥有成本低,尤其是开放源码的这一特点,最主要的是他可 以进行二次开发!!许多中小型网站为了降低网站总体拥有成本而选择了mysql作为网站的数据库  mysql的优点很多


1.体积小  速度快   总体拥有成本低
2.数据库多 可以任意使用 多用户
3.数据库安全性和完整性的有效控制
4.全面支持sql的froup by 和order by自居,支持聚合函数(count,count(distinct),avg,std,sum,max和min)。你可以在同一查询中混来自不同数据库的表。
5.它使用的核心线程是完全多线程,支持多处理器
如今access数据库已经不常见了  大多就是组合  比如mysql+php+linux 这样的组合很多 也很安全 对比access和mysql呢? 这很简单  我们看一下他的数据库结构就知道了

access数据库
       A网站;123.mdb                                                          B网站:345.mdb
                表名;(admin)                                                           表名;(admin)
                       列名;(user,password)                                             列名;(user,password)
                               值;(明文,md5)                                                          值;(明文,md5)
mysql数据库
      A数据库(king1)
      B数据库(king2)
                 表名
                       列名
                             值
这样就很一目了然  我给大家说明下   aeecss数据库 他就是一个网站就只有一个数据库 数据库对应的表什么的 而 mysql数据库呢  它只是一个数据库但是它这个数据库下还有很多数据库 每个数据库中还有很多的表 这也就突出了aeecss数据库比较小 单一


sql注入形成的主要原因是什么呢?
由于程序员的安全意识薄弱,在编写代码时没有对用户输入的特殊字符进行除里,导致将特殊字符附带在参数中直接与数据库进行交换 通过构造特殊的输入作为参数传入web应用程序,而这些输入大都是sql语法里的一些组合,通过执行sql语句而进行攻击者所要的操作,其主要原因是程序 没有细致的过滤用户输入的数据,导致非法数据入侵系统。实例代码如下;

这两行代码我们可以开出来  接收到的参数id没有经过处理就直接执行  下面我们就已经知道  我们可以用and union select order by 这样的sql组合构造语句进行sql注入攻击了 下面给大家讲下 and 1=1 and 1=2是什么意思   大家肯定会问  为什么要去用and 1=1 去判断注入点呢   and 就是和的意思 我们要理解1=1这个东西  这个东西就是让程序数据库去判断代入里面查询没有  如果代入查询  查询网址的东西 and 和1是否=1  那么我们肯定知道1=1是正确的 那么1=2呢 当然是个人都能明白1≠2对吧 所以程序就返回错误这也就证明了 数据库可以将我们输入的字符代入查询 这就造成了sql的注入

那么有人会问权限是怎么一回事呢?
权限注入入侵也是注入的一种  因为这样攻击者就会使用sql语句进行一些操作 我们来看看mysql数据库的权限有哪些  一般分为以下几种
1.root
2.普通用户
root权限非常的大一般为管理员  但是root有什么功能呢 最为常见的就是文件写入 数据库管理 文件读取  而普通用户就不行了  我们如何来辨别注入点的权限呢  论坛也有讲师讲过order by 这个语句  通过这个语句可以查询一些东西对吧  查询过后就可以使用 union select 1,2,3,4,5----  这个了 我们主要用到user()这个函数 我们来看下如何运用

这里我们可以看到  用户是root@localhost 对吧也是最高的权限  那么我们可以直接通过这个权限去干吗   文件写入读取 对你有很大作用  本次的读取写入的盘是d盘我们去看看效果吧  主要是需要  union select ‘king’,2,3 into outfile ‘d:/king.txt’ 这些东西  king是文件内容  king.txt是文件名及文件后缀  d就是盘 into outfile到输出文件的意思 这个就是 将内容king 写入到d盘king.txt文件里面 我们看下效果

很好的 我们看下他的读取效果吧!!!

是这样的啊  那么普通用户呢? 这里我用mysql来登录下 用普通用户来登录  看它的读取效果吧




这里我们可以看到他没有权限对吧  这就鸡肋了哈  那么有些人会问权限注入有什么用呢  如果你直接写入的是php呢  如果是一句话呢  那么攻击者不就直接拿到webshell了吗 所以权限这一块也需要程序员的注意  

防注入是什么呢?
1.魔术引号
魔术引号是一个自动将进入php脚本的数据转义的过程 我们来看下不开启的情况

不将他开启就很正常 还能读取  单引号还是单引号  如果我将他开启呢

这里就能看出 ‘被转义成了/  这样你的sql语句就不能实现组合 执行了 所有的(单引号)(双引号)(反斜杠)都将会呗转义成/ 这样也就防止了sql注入  至于绕过就用php宽字节绕过  希望这点大家去学习学习

2.函数限制  
php addslashes 函数  在每个双引号(")前添加反斜杠  我们把它添加到 我们的源码当中去看看

这也就限制了变量值id 只要经过就必须使用这个函数过滤  我们看看效果

QQ截图20160821171923.png (31.4 KB, 下载次数: 3)

下载附件  保存到相册

2016-8-21 09:19 上传


看到了吗  直接就给过滤掉了!!!

好了mysql教程也就到这里结束了  感谢大家的陪伴  我会走的更远 另外  雅驰是我女神king总是承认的  king总比霸总 蛋总都要帅  他们也承认了 @雅驰

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Web/264.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 移位溢注:告别依靠人品的偏移注入

    移位溢注:告别依靠人品的偏移注入

    2017-03-09 14:12

  • ZABBIX SQL注入

    ZABBIX SQL注入

    2016-12-24 14:47

  • 浅谈sql注入中的Post注入

    浅谈sql注入中的Post注入

    2016-11-25 10:17

  • mysql注入点的另类利用

    mysql注入点的另类利用

    2016-11-25 09:54

网友点评
暂时未开启评论功能~