CI框架中的SQL注入隐患

暗月博客 2019年11月21日22:30:02评论495 views字数 933阅读3分6秒阅读模式
摘要

在CI 框架中,获取 get 和 post 参数是使用了 $this->input 类中的 get 和 post 方法。

0x00

CI框架中,获取getpost参数是使用了$this->input类中的getpost方法。

其中,如果getpost方法的第二个参数为true,则对输入的参数进行XSS过滤,注意只是XSS过滤,并不会对SQL注入进行有效的防范。

例子:

Controller中,定义一个shit方法,获取get数据:

CI框架中的SQL注入隐患

指定了第二个参数为true

(1)XSS测试

CI框架中的SQL注入隐患

2SQL注入测试

CI框架中的SQL注入隐患

并不会对单引号进行处理。


0x01

CI框架中,尽量使用AR类进行数据库查询是比较靠谱的,因为在底层会帮助使用者进行一次有效的转义,但也仅仅是转义而已。

过滤的方法是escape_str() 

function escape_str($str, $like = FALSE) { var_dump($str); echo "/n" ; if (is_array($str)) { foreach ($str as $key => $val) { $str[$key] = escape_str($val, $like); } return $str; } if (function_exists('mysql_real_escape_string')) { $str = addslashes($str); } elseif (function_exists('mysql_escape_string')) { $str = mysql_escape_string($str); } else { $str = addslashes($str); } // escape LIKE condition wildcards if ($like === TRUE) { $str = str_replace(array('%', '_'), array('//%', '//_'), $str); } return $str; }

该方法仅仅是调用了一些转义函数,并对like参数进行过滤。

如果查询的变量没有被单引号包裹,那么就无法进行保护:


0x02

AR类的过滤方案是没有考虑数组的key值的,纵观各大CMS出现的SQL注入,由于数组的$key过滤不严直接带入SQL查询的漏洞屡见不鲜。

CI框架中的SQL注入隐患

输出为:

CI框架中的SQL注入隐患

0x03

CI框架开发速度快,轻巧,并且不用单独学习一门模板语言也可以使用。但是如果对CI框架中自带的安全机制理解不透彻,会导致无穷无尽的漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日22:30:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CI框架中的SQL注入隐患http://cn-sec.com/archives/72945.html

发表评论

匿名网友 填写信息