主页 > 网络知识 > 代码审计思路讨论(2)

代码审计思路讨论(2)

 

代码审计思路讨论

 

B、这里我们发现query函数依旧是一个自定义函数。定位函数来查看一下该函数。发现该函数依旧是在文件mysql_fetch_array当中。Query函数利用mysql_query来执行sql语句,并且返回。如果查询失败指定报错信息内容

 

代码审计思路讨论

 

C、login函数登陆函数。利用getone函数执行SQL语句。num=1

 

代码审计思路讨论

 

那么总结一下,getone函数作用:执行sql语句,控制报错信息,以关联数组形式返回值。(注意查询语句当中存在字符串“count(*)asnum”会将查询结果转化。查询成功num=1,查询失败num=0)Login函数作用是带入用户名,密码进入数据库查询并且返回第一行查询结果且结果进行转化查询成功num=1,查询失败num=0。

到目前为止,我们可以分析一下数据流了。首先数据从前端上传到文件user.php文件当中,act=do_login位置代码。经过if语句进行基本判定然后执行sql语句,将数据上传到数据库。这里我们没有发现任何过滤的函数。看到这里我们很有理由怀疑该位置存在漏洞。值得注意的是,这里的login()函数首先判定用户名是否存在在执行用户名以及密码的联合查询。这里我的想法是验证用户名。那么我合法的注册一个就是咯。下面我们查看playload:

我这里注册了一个账号abc123/abc123

注入位置参数$pwd。‘)用来闭合md5加密。

Playload:abc123‘)or 1=1 #

注意:在我测试的过程中发现了一个很不愉快的事情。我发现这么注入没有任何效果。感觉像是单引号被干掉了。关于这个问题,我的思路是,采用var_dump来看看情况。下面是我处理该问题的思路:

使用var_dump来查看输出变量的值:

 

代码审计思路讨论

 

很明显这里的单引号被转义了。这个时候我们想过造成该转义的大多是使用函数addslashes(),通过搜索,我们发现在文件common.inc.php当中发现自定义函数deep_addslashes()

 

代码审计思路讨论

 

接着我查询什么文件包含了该文件。通过搜索发现在文件common.inc.php文件被调用且该文件也被user.php文件使用。

 

代码审计思路讨论

 

那么问题就很好解决了。通过%df来尝试绕过该函数。结果发现成功了。

那么更新payload:abc123%df’)

这里我决定使用sqlmap来扫描。结果扫描成功。

 

代码审计思路讨论

 

截至到目前,一个sql注入已经被挖掘出来了。这个时候我们考虑一下,文件user.php当中还有其他的执行的sql语句,并且没有过滤。嘿嘿。是不是也存在相应的漏洞呢。

三、XSS漏洞审计 3.1、XSS跨站脚本攻击总结
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!