(基础)代码审计sql漏洞挖掘

sql注入漏洞

1.基本技巧

sql注入漏洞通常有两种利用方式。一种是权限较大,直接写入webshell,另外一种是权限较小,但是可以读取用户账号密码,比如读取管理员账号密码,登录后台管理。

sql注入经常出现在登录页面http请求中的user-agent,client-ip,x-forward-for等可能会被程序存储到数据库中的地方。另外,在订单处理的地方,由于业务逻辑复杂,经常会有二次注入漏洞。

至于在白盒审计中,若想定向挖掘sql注入漏洞,只需要注意这几个数据库操作关键字:select from , mysql_connect , mysql_query , mysql_fetch_now , update , insert , delete ; 查到这些关键字后,定向追踪他们,就可以审计sql注入漏洞

2.编码注入

程序在进行一些操作之前,经常会进行一些编码处理,通过输入一些编码函数不兼容的特殊字符,可以导致输出的字符变成有害数据。其中最常见的编码注入就是mysql的宽字节注入以及urldecode/rawurldecode这两个函数。

宽字节注入

怎么说呢,这个漏洞以前研究过,但是总是没研究透。个人感觉,只要是set character_set_client='gbk'或者set NAMES 'gbk',那么就可能存在漏洞。至于原理虽然无法搞的十分清楚,但是可以直接手工测试。看能否吃的掉转义字符。

解决这个漏洞的方法:

第一种方法,set NAMES 'gbk' 之后,在 set character_set_client=binary就可以了。

第二种方法,使用pdo方式,在php5.3.6及以下版本设置 setAttribute(PDO::ATTR_EMULATE_PREPARES,false);来禁用prepared statements的仿真效果。

综上所述,要想看代码中是否有宽字节注入,那么搜索几个关键字:
SET NAMES
character_set_client
mysql_set_charset('gbk')

二次urldecode注入

如果目标网站开启了GPC,并且用了urldecode或者rawurldecode函数,那么通过二次解码,第二次就会解析出单引号,导致注入。

因此,在代码审计中,可以通过搜索urldecode和rawurldecode来挖掘二次注入漏洞。

sql注入预防方法

通常,程序要么被动获取参数,比如get,post;要么主动读取文件或者远程页面;因此,过滤好这两条路,就可以防止sql注入。

在PHP的核心配置中,magic_quotes_gpc负责对get,post,cookie的值进行过滤,magic_quotes_runtime对从数据库中或者文件中获取的数据进行过滤。

但是,上面两种方法只能过滤部分sql注入,因为他们只是转义了单引号,双引号,反斜杠\,空字符null,对int注入没什么用。因为int类型可以直接接sql语句,不需要闭合。

addslashes函数

这个函数对参数中的单引号,双引号,反斜线,空字符进行过滤。但是有的程序员在开发的时候,没有考虑到get请求中可能存在数组(这个函数是对字符串进行过滤),导致了绕过。

说实话,get请求中带数组是怎么带的?这个我还真比较懵。估计得完整开发一个网站之后,才能知道get请求中带数组是怎么回事?

mysql_rel_escape_string($str,$con)

这个函数也是过滤,第一个参数是字符串,第二个参数可选,是数据库连接,若没有设置第二个参数,那就默认为上一次连接的数据库。

这个函数主要过滤的是:\x00,\n,\r,\,',",\x1a

但是,这里的\x00和\x1a我不太懂是什么意思。

intval()函数

前面的函数针对的是字符型注入,对Int型注入效果不是太好。因此,这个intval()函数就是以白名单的思想,对数据进行过滤。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Web安全之SQL注入漏洞 本节知识点 SQL注入原理 前言 结构化查询语句(Structured Query L...
    f354f7231c35阅读 2,090评论 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,430评论 2 22
  • 读书有什么用?迟早都会忘得七七八八。别人问起,诶,你也看过XX,记不得里面说的XX。蜜汁尴尬后,会笑着抱歉说,这个...
    怀山2018阅读 571评论 6 3
  • 每日一图 图(单反)/少帅 爱恨, 在心间, 反复纠缠。 是非早已乱, 只剩故事流转! 文/少帅 《随笔》
    J少帅阅读 160评论 0 0
  • 晚上突然被一位久未联系的朋友问到自己过得是否幸福?觉得很唐突,想了想,可能是朋友圈里发了一篇《生活不止眼前...
    随风而逝711阅读 183评论 0 0