代码审计第三讲实战挖掘sql注入漏洞

  • A+
所属分类:代码审计


为了更好去挖掘php漏洞,对于流行的框架,我们也要了解一下,这样才能挖掘到高位漏洞。对于框架学习,不同公司有不同框架,所以对于框架,也因人而应,另外看公司需求,如果你的公司大部分采用某一种框架,你来学习这种框架就可以了。因为这样才可以提高你的工资。这里我推荐大家学习是ThinkPHP

http://document.thinkphp.cn/manual_3_2.html

http://sec-redclub.com/

代码审计第三讲实战挖掘sql注入漏洞

相对来说,我们也不能全部去把开发手册看完。我们要有需求型去查看文档,比如基础部分,查看哪些知识,掌握最基本知识就可以了。如果你想挖掘框架漏洞,那么必须有必要去开发一些小程序,利用上框架,这样你就可以掌握的节奏快一些,而且也能更好理解。

代码审计第三讲实战挖掘sql注入漏洞

Application

├─Common         应用公共模块

  ├─Common      应用公共函数目录

  └─Conf        应用公共配置文件目录

├─Home           默认生成的Home模块

  ├─Conf        模块配置文件目录

  ├─Common      模块函数公共目录

  ├─Controller  模块控制器目录

  ├─Model       模块模型目录

  └─View        模块视图文件目录

├─Runtime        运行时目录

  ├─Cache       模版缓存目录

  ├─Data        数据目录

  ├─Logs        日志目录

  └─Temp        缓存目录

以前你看到大写字母IM,知道代表什么意思么?

 

代码审计第三讲实战挖掘sql注入漏洞

模板就是把所有的过滤方法、函数全部给框起来,你直接调用就可以。如果框架一出现问题,那么所以调用者就会出现问题了。

https://segmentfault.com/q/1010000002988073框架问题就简单给大家介绍到这里。

本次审计代码为damiCMS,进行sql注入漏洞挖掘。

 

代码审计第三讲实战挖掘sql注入漏洞

文中箭头打的地方,就是我们重点去查看代码的地方。

代码审计第三讲实战挖掘sql注入漏洞

Action文件夹里面的文件是我们重点查看的文件。

你可以重点去一个一个分析,也可以用notepad++对整个文件夹的$_GET或者$_POST等进行查找。

代码审计第三讲实战挖掘sql注入漏洞

去查找有没有相对应的漏洞。对于代码一定去细看,如果不细看,你是发现不了什么问题的。

代码审计第三讲实战挖掘sql注入漏洞

这个是查找出来的结果,我们需要对结果一一进行分析。看看是否有漏洞。

代码审计第三讲实战挖掘sql注入漏洞

我们注意到这个文件,里面目前没有看到相关的过滤函数。对于前面的文件里面,出现了大量的过滤函数,如htmlspecialcharsremove_xss等过滤函数。对于这些函数,本文就不再一一进行解释了,如果对此两个函数不了解,可以查看以下URL

http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

代码审计第三讲实战挖掘sql注入漏洞

我们通过阅读源代码,发现ajax_arclist()这个函数发现问题,被圈住的这三个变量没有经过任何的过滤,直接就进过赋值,可能会发生问题。那现在我们开始验证问题。

1.首先需要搭建damicms,我们采用环境是wamp。具体搭建我就不给大家介绍了,前几节,有具体搭建的内容。

代码审计第三讲实战挖掘sql注入漏洞

从前面的几步过程中,我们发现where没有经过加固,直接就带入数据库中,

 代码审计第三讲实战挖掘sql注入漏洞


找到这个测试点以后,为了证明我们查找是否存在注入点。我们开始利用火狐浏览器,进行验证。依次构造的路径为api/ajax_arclist(函数名)/model(requst接收的值)/article/页数。

只有这个page页为真,才会执行sql语句,所以我们这里随意给赋值一个数值。

代码审计第三讲实战挖掘sql注入漏洞

执行完语句之后

代码审计第三讲实战挖掘sql注入漏洞

利用常规判断sql语句,and 1=1and 1=2,来进行判断是否有注入。

代码审计第三讲实战挖掘sql注入漏洞


页面返回值不一样,证明页面存在注入。

我们利用sqlmap进行跑表,其实手工也可以进行猜表,如果手工你不会,则去看前两节,我在这里就给大家利用工具进行跑表了。

 代码审计第三讲实战挖掘sql注入漏洞


代码第一处问题。其实利用$_GET查找还发现了第二处问题,

articleAction.class.php这个文件家里面,$_GET传输没有进行过滤,导致出现了注入,后来高版本加上inject_here()这个函数,但是依然可以进行绕过。

代码审计第三讲实战挖掘sql注入漏洞

//防止sql注入

 

         functioninject_check($str)

 

         {

 

          $tmp=eregi('select|insert|update|and|or|delete|'|/*|*|../|./|union|into|load_file|outfile',$str);

 

                  if($tmp)

 

                  {

 

                  alert("非法操作!",3);

 

                  }

 

                  else

 

                  {

 

                          return$str;

 

                  }

 

         }

这个是在common.php文件里面,我们可以采取双竖线||进行绕过。具体测试我就不给大家演示了。此次文章就给大家写到这里。

下一节预计讲XSS基础,文章总体比较基础,还希望能给新手一些帮助。

 

本文作者:whitecell-club.org  redBu11

文章欢迎转载,但请务必保留作者与出处!

代码审计第三讲实战挖掘sql注入漏洞


本文始发于微信公众号(WhiteCellClub):代码审计第三讲实战挖掘sql注入漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: