美文网首页
(基础)代码审计sql漏洞挖掘

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

作者: FKTX | 来源:发表于2018-01-19 16:56 被阅读0次

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()函数就是以白名单的思想,对数据进行过滤。

相关文章

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

    sql注入漏洞 1.基本技巧 sql注入漏洞通常有两种利用方式。一种是权限较大,直接写入webshell,另外一种...

  • 代码审计基础之SQL注入漏洞

    1.SQL注入原理 SQL注入就是攻击者通过把恶意的SQL语句插入到Web表单的输入页面中,且插入的恶意语句会导致...

  • PHP代码审计工具——Rips详细使用教程

    一、代码审计工具介绍 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。 在源代码的静态安全...

  • 审计PHP工具篇之 RIPS

    0x00 前言 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。 在源代码的静态安全审计中...

  • 代码审计之论

    代码审计现状 随着开发人员的安全意识逐步提高,导致漏洞挖掘的难度逐年递增。而代码审计,逐渐出现在大家的视野里,方...

  • 【网络安全】记一次代码审计

    前言 在挖掘漏洞过程中,可能有很多种方式,比如:纯白盒的代码审计、纯黑盒的渗透测试、对比补丁包寻找漏洞点等方式。这...

  • 2021-12-06-java代码审计初步认知

    一、代码审计的定义代码审计是一种以发现安全漏洞,程序错误和程序违规为目标的源代码分析技能。 二、代码审计需要的能力...

  • 2019-07-28-php代码审计

    一、PHP代码执行代码审计首先讲一下PHP代码执行漏洞和命令执行漏洞的区别,PHP代码执行指的是将php代码植入到...

  • 代码审计——xss漏洞

    XSS漏洞大致分为三种 反射型XSS漏洞 存储型XSS漏洞 基于DOM的XSS漏洞 反射型XSS漏洞 它通过给别人...

  • shellcode与漏洞

    软件漏洞: 成因:无法在原点上区分数据和代码 漏洞挖掘:vulnerability 漏洞exploit 漏...

网友评论

      本文标题:(基础)代码审计sql漏洞挖掘

      本文链接:https://www.haomeiwen.com/subject/dejwoxtx.html