蜗蜗侠's Blog-关注网络安全移动版

主页 > 代码审计 >

对代码审计sql漏洞的看法

那么多帖子都没过,宝宝好伤心  下面是宝宝学习 php审计的sql注射的挖掘的 一些看法
首先我们先来普及下这个sql注入

什么是sql注入
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模 式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用 户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

Sql注入的一些特征
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问防止SQL注入攻击没什么区别,所以市面的防火墙都不会对SQL注入发出警报,如果管理员没查看ⅡS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。

Sql注入攻击的思路
(以asp为例)
·发现SQL注入位置;
·判断后台数据库类型;
·确定XP_CMDSHELL可执行情况
·发现WEB虚拟目录
·上传ASP木马;
·得到管理员权限

通俗的话讲就是外部能够自定义且与数据库打交道的参数因为没有过滤或者过滤的不严谨型可导致写入木马,脱裤,篡改数据,绕过验证...等等危害~
Sql注入类型
常见的sql注入分为数字型注入,字符型注入
怎么区分呢?很好区分

比如一个sql语句

Select * from test where bangid = ?   
(1)Bangid=1 数据库规定的这个bangid 是数字型 切 bangid 没有过滤直接在数据库里进行查询  造成sql注入;
(2)Bangid=’name’数据库规定的这个bangid 是字符型   且bangid 没有过滤直接在数据库里进行查询 可造成sql注入;

实战 查找注入漏洞
OK   关于sql注入的危害跟原理已经介绍完了。下面我们进行实战 查找注入漏洞。
怎么去寻找注入漏洞呢?
首先SQL注入的常见方式就是 get注入 post 注入  cookie注入
我们首先去寻找参数接收脚本类 看看怎么接收的参数。
我随便在网上找了套cms
看结构 是用thinkphp的   
我随手点击了个脚本类
实例找sql注入漏洞Post
大家可以看到P53 的参数POST参数listorders  没有进行任何过滤  被foreach  
如果payload写入listorders  的值中  就会进入$listorder  造成存储型XSSxss不在本课中不具体说了)  

写入$id呢  我们来看P56行 有一个函数叫做getCategory($id,'',true);
利用phpstrom 鼠标定位到这个getCategory上 按住ctrl键  就会进入
这个函数
此刻 我们进入了这个函数中
P316之前 这个$catid  也就是上面的$id 没有进行的任何过滤 直接带入了select 语句中。  Sql注入就这么出来了。
实例找sql注入漏洞Get
查找get类型的sql注入  首先 我先根据 常量
去寻找get定义的常量
然后去搜索全文  没找到有用的  只有两个用作判断
然后 我就用$_GET 去搜索全文
我们定位到这段代码  看到P540 没有过滤直接带入了$where
这几行,要想让参数进入$where  只要符合in_array这个函数就OK了  
所以 我们给searchtype 赋值一个属于array('id', 'title', 'keywords', 'description')  任何一个值都可以,保证可以走到$where入值。然后在进入        P550或者,P552中的select语句中造成sql注入。只是展现方式的位置不同而已。

流程:  接收GET参数keywords  =in_array=>$where =>注入
实例找sql注入漏洞Cookie
还是这款cms与上面同样的道理进行搜索,但是没有找到进行与数据库交互的,所以这套程序就没有了cookie注入了。当然我不能直接略过不是。
找漏洞原理是一样的,就是在进行注入的时候 需要借助抓包工具进行抓包比如利用burpsuite,当然也可以用自己喜欢的抓包工具,或者cookie修改插件。构造exp
小弟能力有限,就到这里了    学习web安全 一定要学习一门语言才能更好的学习 跟快的上道
(责任编辑:蜗蜗侠)