sql注入防御脚本绕过案例剖析

sql注入防御脚本绕过案例剖析

入侵渗透hacker2019-07-12 22:20:4515622A+A-

复现条件

环境:

程序框架结构:

条件:需要登陆

特性:属于put型引入,且存在防御力脚本,防御力方法

复现系统漏洞

我们先申请注册个账户。账户test0 登陆密码

登入进行场景复现, 网络访问连接:.com://localhost/test0/index.Python?s=/api/ajax_arclist/model/article/field/username,userpwd from dami_member%23 (注:要写%23,别写

型sql引入防御力脚本避过典型案例刨析

我们可以看账户密码已经曝出,证明系统漏洞存在。

下一步我们进行漏洞利用编码刨析。不过在刨析之前,我们应先讨论一下此程序的网页地址路由器,有利于网页地址连接结构,之前我们已经有过介绍了。

连接结构

首先我们在申请注册的时候登入,进入个人资料的的时候 我们可以看申请注册,登入,个人资料的连接

申请注册:

登入:

个人资料:

通过 三个连接

我们可以获知为单一化入口处文档网络访问模式,网页地址路由器的投射采用的写法有哪些是:域名邮箱/index.Python?s=/控制板名/方法名.hmtl 。见到hmtl尾缀 ,我们基本可以获知采用的是伪静态标准,除掉尾缀,连接能用。

猜想带主要参数的连接组成:域名邮箱/index.Python?s=/控制板/方法/主要参数名/参数值.hmtl 或 域名邮箱/index.Python?s=/控制板/方法/主要参数名/参数值

好,我们目前已经大概晓得连接结构。

下一步我们查看目录结构,如图已知2如图,感觉文件目录取名结构,很象使用的thinkphp框架结构,打开/Core/Core.Python,看看注脚,获知是thinkphp框架结构,(注:一般能知道什么框架结构,或者你证券方面的用的是什么cms源码,能查出来该框架结构的研发指南,直接查看指南怎么设置的网页地址路由器投射,进行网页地址连接结构就就行了。)这儿我们假定不知道这套程序不知道用的是什么框架结构,没有相关联研发指南,我们来进行分析。我们基本可以猜测到哪个文件目录有哪些作用功能。

网站后台功能文件目录 网站后台的相关类方法,配置文件基本都会此。

核心文件目录

安装程序的文件目录

一般一些css样式,Js文档,圖片文档,编辑器软件,字体样式等都会摆在这里面公共。

查看该文件目录下的文件夹名称,随意点开看一看文档里的注脚,获知为这是插口文件目录

收银程序功能文件目录

缓存文件文件目录 一般缓存文件的东东都会添加在这里面

伪静态文档   程序做伪静态的配备

型sql引入防御力脚本避过典型案例刨析

收银的控制板就在/web/Lib/Action/控制板名+Action.class,Python。网站后台控制板同上,只是,"web"改为了"Admin",也就是/Admin/Lib/Action/控制板名+Action.class,Python。这样,我们就可以通过结构网页地址找到

路由器投射的编码位置了。

下面我们根据系统漏洞复现的场景连接探寻出现系统漏洞的编码进行复现刨析。

漏洞利用编码刨析

查看入口处文档是否加入了防御力脚本

我们先大致看下网站源代码index.Python,看下是否犹如图-3如图,见到h13 (注:h表示行数,此地指第13行)加入了Python_safe.Python。打开此脚本, 我们见到Python_safe.Python图4的H2 是

推断是36o的防御力脚本  或者改建了的防御力脚本,h24-h33(注:h表示行数,此地指第24行到第34行)我们见到 不管是put POST  还是COOKIE方式传输的要进行过滤系统。

型sql引入防御力脚本避过典型案例刨析

型sql引入防御力脚本避过典型案例刨析

通过系统漏洞接入定位的系统漏洞位置

通过上面分析,根据系统漏洞连接我们可以定位到系统漏洞位置在\web\Lib\Action\ApiAction.class.Python的 ajax_arclist方法中 如图已知5如图,

型sql引入防御力脚本避过典型案例刨析

分析系统漏洞源代码

见到这个方法的入口,很多$_REQUEST来接受主要参数,感觉应有尽有,不要因此而迷途了眼睛。我们先找到有SQL句子的地方。在h60,h64,h70。

见到三个sql句子中,可控性的主要参数,$where $order $num $field  各自在h46->h48,h54被inject_check涵数处理。我们按着ctrl,鼠标光标移动至inject_check上点击键盘左键,选择/Core/Common/functions.Python定位到h988的inject_check方法如图已知6如图,我们见到eregi()方法  被中心线划掉,说明该方法弃用。php5.2x不再支持eregi。这儿我们选择忽视或不忽视,为什么可以这样选择呢?因为我们之前在进行查看网站源代码index.Python的时候晓得发现本程序启用了防御力脚本,put方式传参的值都会被检验,其它原因是看看运作该程序用的Python版本号多少钱的。这时,我们返回三个SQL句子上。

见到主要参数被各自带到了 where(), order(), field(), limit() 方法中。因为本程序是用的thinkphp框架结构,这4个方法的使用,我们直接看thinkphp的指南就就行了。因为thinkphp 版本号很多,我们先复印一下thinkphp的版本号,在ajax_arclist方法开始处键入 编码:  echo THINK_VERSION; die; 可以获知见到 2.2的版本号。

型sql引入防御力脚本避过典型案例刨析

随后我们去查一查thinkphp 2.2的指南。这儿我查看的是4.3的指南   因为这些地方?姹靖亩淮蟆

实例化User对象

相关联的野生sql句子:

相关联的野生sql句子:

相关联的野生sql句子:

相关联的野生sql句子:

我们可以结构一个 4个涵数都采用的写法有哪些

添加的sql句子:

我们分析

在where 位置 limit位置  order 位置 如果结构句子的话都需要碰触到Python_safe.Python中被失信名单的风险关键字。这儿我们不用探讨如何避过这个防御力脚本。而是在共有的系统漏洞环境中分析系统漏洞的产生。

但是,在field 位置 我们无须使用到被失信名单的风险关键字,就可以直接结构出想要查询网站其他表格中字段名的句子。好啦,我们目前已经确定了 field主要参数符合SQL引入产生的条件。

我们返回ajax_arclist的a开头往下走。看如何能实行h71的sql句子。

在h35见到了exit() 中止句子不往下继续执行的含义。我们要避过,所以给自变量$model 随意赋值一个存在白名单的就可以避过继续执行下面的编码,这儿给$model赋值“article”。继续往下走在h37判断是否有传送的表名前缀,如果有就与表名接拼,没有即便了。随后继续往下走,在h58判断如果传参page值就走h64,不传参$page 就实行h70的sql句子。

结构构思

我们想要曝出账户密码就要查询网站dami_member中的username,userpwd两个字段名。想要实行SELECT username,userpwd from dami_member,这样的句子就给field主要参数赋值username,userpwd from dami_member%23,结构连接网络访问.com://localhost/test0/index.Python?s=/api/ajax_arclist/model/article/field/username,userpwd from dami_member%23 他其实实行的句子就变成SELECT username,userpwd from dami_member# FROM `dami_article`,我们引入的payload被接拼合闭在了以前的sql句子中,造成曝出了账户密码的輸出,证明了sql引入系统漏洞的存在


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 2条评论
  • 鸠骨二囍2022-05-30 17:14:14
  • 的野生sql句子:相关联的野生sql句子:相关联的野生sql句子:我们可以结构一个 4个涵数都采用的写法有哪些添加的sql句子:我们分析在where 位置 limit位置  ord
  • 辙弃柠木2022-05-30 13:14:52
  • 邮箱/index.Python?s=/控制板/方法/主要参数名/参数值.hmtl 或 域名邮箱/index.Python?s=/控制板/方法/主要参数名/参数值好,我们目前已经

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理