参考joolma的mvc框架讲解:http://www.360doc.com/content/11/1219/18/1372409_173441270.shtml

从这个页面开始下断点:Joomla_3.7.0/components/com_fields/controller.php

调用父类的构造方法

继续跟:/Applications/MAMP/htdocs/Joomla_3.7.0/libraries/legacy/controller/legacy.php

-------分割线-------

跟进函数,位于/Joomla_3.7.0/libraries/legacy/model/legacy.php

在这里调用第一个的get()函数 $this->state = $this->get('State');

跟进以后构造成模块也就是 getState($property = null, $default = null) 函数

$this->populateState();

遇到这个继续跟进

位于 /Joomla_3.7.0/administrator/components/com_fields/models/fields.php    p73-89

protected function populateState($ordering = null, $direction = null)

可以看到这里有调用了父类populateState方法,我们跟进到父类
parent::populateState('a.ordering', 'asc');
继续跟进

位于/Joomla_3.7.0/libraries/legacy/model/list.php 

跟进getUserStateFromRequest()函数

/Applications/MAMP/htdocs/Joomla_3.7.0/libraries/cms/application/cms.php

这里的$request=list  $key=com_fields.fields  继续跟进$cur_state = $this->getUserState($key, $default);

这里的$key是等于com_fields.fields.list

经过一系列for循环

$cur_state的值变成了注入payload。

返回$list的值

位于 /Applications/MAMP/htdocs/Joomla_3.7.0/libraries/legacy/model/list.php   第495-570行 

第566行:

跟进setState函数

这时候就设定了list.fullordering的值。

接着看第二个$this->items = $this->get('Items');

走get函数,执行了getItems()

 

跟进getItems()  位于 /Joomla_3.7.0/libraries/legacy/model/list.php   第172-186行

可以看到执行了_getListQuery()  函数,位于同一目录下。

然后执行getListQuery() 函数,位于/Joomla_3.7.0/administrator/components/com_fields/models/fields.php  第124-328行

执行到305行

取list.fullordering的值,我们在前面$this->state = $this->get('State');  操作中,已经把$this->state = $this->get('State');设成了sql语句的值。

赋值给$listOrdering,然后进入order查询。

就这样产生注入了。

后记。模模糊糊跟着函数看了大半天的参考文章,才写成的,对于joolma这种大程序,函数那么多还是容易犯迷糊,最后经过指点,用phpstorm看调用堆栈就有过程,然后慢慢回溯回去,才有了这篇文章。

参考:http://bobao.360.cn/learning/detail/3870.html

poc:index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x3a,concat(1,(select%20md5(1))),1)

Joomla!3.7.0 Core SQL注入漏洞动态调试草稿的更多相关文章

  1. joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞

    影响版本: 3.7.0 poc http://192.168.49.2:8080/index.php?option=com_fields&view=fields&layout=moda ...

  2. DT6.0关于SQL注入漏洞修复问题

    阿里云安全平台提示:Destoon SQL注入,关于: Destoon的/mobile/guestbook.php中$do->add($post);这行代码对参数$post未进行正确转义,导致黑 ...

  3. Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析

    RickGray · 2015/10/26 11:24 昨日,Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响.攻击者通过该漏洞可以直接 ...

  4. 【代码审计】五指CMS_v4.1.0 copyfrom.php 页面存在SQL注入漏洞分析

      0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...

  5. 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析

      0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...

  6. 【代码审计】iCMS_v7.0.7 admincp.app.php页面存在SQL注入漏洞分析

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

  7. 【代码审计】iCMS_v7.0.7 apps.admincp.php页面存在SQL注入漏洞分析

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

  8. 【代码审计】iCMS_v7.0.7 keywords.admincp.php页面存在SQL注入漏洞分析

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

  9. 【代码审计】iCMS_v7.0.7 search.admincp.php页面存在SQL注入漏洞

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

随机推荐

  1. 记录某公司(简称SMKJ) 的一次面试

    昨天去了一家公司面试 Java 开发岗位,这篇文章主要是做一个面试的记录以及总结. 这家公司的规模大概100-200人,环境还可以,在一栋大厦租了两层办公室(31层和32层).一同搭电梯上去的还有一位 ...

  2. iPhone的App嵌入html页面问题

    测试环境:iPhone ios 11.0.3 问题:iPhone App嵌入HTML页面,页面拉动到底部时,手势从屏幕底部边缘开始往上拉动,页面出现白色图层,且html页面一屏外的会卡住,无法滚动,需 ...

  3. C语言第五次作业函数

    一.PTA实验作业 题目1: 6-6 使用函数输出水仙花数 1.本题PTA提交列表 2.设计思路 1.narcissistic函数 1.由于number的值后面会变化,所以定义d,e用于储存numbe ...

  4. Week02-Java基本语法与类库

    1. 本周学习总结 本周主要学习了包装类,明白了包装类比基本数据类型的优点(见书面作业4.2),了解了自动装箱,自动拆箱的概念和区别(见书面作业4.1),知道了java中的引用类似C语言中的指针,明白 ...

  5. Hibernate之ORM与Hibernate

    ORM: ORM是 Object /Relation Mapping,对象/关系数据库映射. 目前比较流行的编程语言,如java ,c#等,它们都是面向对象的编程语言,而目前比较主流的数据库产品,如O ...

  6. 在ArcGIS中导出现有mxd的style文件

     做好的地图包含许多地图符号,这是之前花了很多功夫做的,怎么把它导出来再用呢?     在ArcGIS中右键工具栏,customize,选择command选项卡,在搜索框中输入style ,选择too ...

  7. 构建微服务开发环境7————使用Github管理项目代码的版本

    [内容指引] 1.注册GitHub帐号: 2.下载Github Desktop客户端: 3.macOS安装Github Desktop客户端: 4.windows安装Github Desktop客户端 ...

  8. java实现图片压缩

    java实现图片压缩 package Test; import java.awt.Image; import java.awt.image.BufferedImage; import java.io. ...

  9. EasyUI Datagrid 分页的情况下实现点击表头的小三角图标对数据库中所有数据重新排序

    说明一下: 当点击 datagrid 表头某一列的小三角图标时,easyui 本身是有排序的,但是在当我们对 datagrid 进行了分页的情况下,点击排序只是对当前页的数据进行排序,而需求需要我对数 ...

  10. Delphi Web开发连载 --ThinkDelphi (序)

    如果把Delphi比作男人,那他曾经独步天下,笑傲江湖过: 如果把Delphi比作女子,那她曾经貌美如花,倾国倾城过! 但那只是历史,那只是曾经, 弹指一挥间,Delphi却似乎英雄迟暮,美人已老.. ...