• 最新消息:

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

    技术文章 胡马 77浏览 0评论

    sql注入漏洞

    1.基本技巧

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

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

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

    2.编码注入

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

    宽字节注入

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

    解决这个漏洞的方法:

    第一种方法,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函数,那么通过二次解码,第二次就会解析出单引号,导致注入。

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

    因此,在代码审计中,可以通过搜索urldecode和rawurldecode来挖掘二次注入漏?#30784;?/p>

    sql注入预防方法

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

    在PHP的核心配置中,magic_quotes_gpc负责对get,post,cookie的?#21040;?#34892;过滤,magic_quotes_runtime?#28304;?#25968;据库中或者文件中获取的数据进行过滤。

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

    addslashes函数

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

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

    说实话,get请求?#20889;?#25968;组是怎么带的?这个?#19968;?#30495;比较懵。估计得完整开发一个网站之后,才能知道get请求?#20889;?#25968;组是怎么回事?

    mysql_rel_escape_string($str,$con)

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

    这个函数主要过滤的是:x00,n,r,,’,”,x1a

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

    intval()函数

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

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

    转载请注明:胡马部落 » (基础)代码审计sql漏洞挖掘

    发表我的评论
    取消评论
    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    内蒙古11选5开奖结果