Seay源代码审计系统使用问题记录


一、前言

最近学到了代码审计一块的内容,但是使用Seay系统的时候发现一些问题,拿出来一起研究一下下,至于代码审计的流程思路等学完了再写

二、sql注入select 语句匹配不全

首先来看看系统自带的描述:SQL语句select中条件变量无单引号保护,可能存在SQL注入漏洞,这里需要注意条件是变量无单引号保护,所以不会匹配到select语句中有单引号包裹变量的情况。

来一个正常的语句,测试一下:select id from user where name='$username',结果不匹配,因为这个变量是有单引号保护的:

再来一个应该被匹配到,但是没有被匹配到的语句:mysql_query('select * from user where id = '.$_GET['id'].''),结果为:

上面那个sql语句匹配失败了所以进行简化(实际的意思)一下为:select * from user where id = $_GET['id'],继续匹配一下:

结果一定成功的,因为变量是没有单引号包裹的

那么问题就出在这个语句:mysql_query('select * from user where id = '.$_GET['id'].'')

所以改一改正则匹配的语句就好了select\s{1,4}.{1,60}from.{1,50}\bwhere\s{1,3}.{1,50}=( *\'\.){0,10}\$\w{1,20}((\[["']|\[)\${0,1}[\w\[\]"']{0,30}){0,1}(\.\'){0,10}

测试一下:mysql_query('select * from user where id = '.$_GET['id'].''),结果为:

成功匹配到了,把这个规则添加进去就行了

目前还没有碰到
mysql_query("select * from uesr where id =".$_GET['id']."");
如果出现的话把上面的正则表达式修改一下,在=后面的\' 改为 \"即可
如下:

select\s{1,4}.{1,60}from.{1,50}\bwhere\s{1,3}.{1,50}=( *\"\.){0,10}\$\w{1,20}((\[["']|\[)\${0,1}[\w\[\]"']{0,30}){0,1}(\.\"){0,10}


文章作者: xi3w3n
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xi3w3n !
评论
  目录