最新消息:

南国论坛七星彩图规:(基?。┐肷蠹苨ql漏洞挖掘

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

sql注入漏洞

1.基本技巧

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

sql注入经常出现在登录页面http请求中的user-agent,client-ip,x-forward-for等可能会被程序存储到数据库中的地方。另外,在订单处理的地方,由于业务逻辑复杂,经?;嵊卸巫⑷?a href="//www.4ue20.com/tag/%e6%bc%8f%e6%b4%9e" title="View all posts in 漏洞" target="_blank">漏洞。

至于在白盒审计中,若想定向挖掘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函数,那么通过二次解码,第二次就会解析出单引号,导致注入。

(基?。┐肷蠹苨ql漏洞挖掘

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

sql注入预防方法

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

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

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

addslashes函数

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

(基?。┐肷蠹苨ql漏洞挖掘

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

mysql_rel_escape_string($str,$con)

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

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

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

intval()函数

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

(基?。┐肷蠹苨ql漏洞挖掘

转载请注明:海南环岛赛公式 » (基?。┐肷蠹苨ql漏洞挖掘

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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
118| 688| 886| 626| 958| 573| 777| 222| 683| 123|