参考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. New UWP Community Toolkit - RadialGauge

    概述 New UWP Community Toolkit  V2.2.0 的版本发布日志中提到了 RadialGauge 的调整,本篇我们结合代码详细讲解  RadialGauge 的实现. Radi ...

  2. 网络推广 免费推广产品网站 B2B网站如何推广

    云集网(yunjinet.com)免费发布各类服务和产品信息,在平台上推广你的产品.帮助商家推广优质的产品和服务.如何提高信息的点击量为了提高分类信息网的信息质量,对重复度高.相似度高的信息进行了过滤 ...

  3. java冒泡排序和快速排序

    本ID技术干货公众号"java工会",欢迎关注指正. 一.冒泡排序 1.算法介绍 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] & ...

  4. Tornado 网站demo 三

    模板 修改index.py #!/usr/bin/env Python # coding=utf-8 import tornado.web import methods.readdb as mrd c ...

  5. TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台

    自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...

  6. SpringMVC源码情操陶冶#task-executor解析器

    承接Spring源码情操陶冶-自定义节点的解析.线程池是jdk的一个很重要的概念,在很多的场景都会应用到,多用于处理多任务的并发处理,此处借由spring整合jdk的cocurrent包的方式来进行深 ...

  7. sql 多条记录插入

    --多条记录插入,用逗号分开值. INSERT dbo.studentinfor ( id, name, class, age, hpsw ) ', -- id - nvarchar(50) N'te ...

  8. 在Vim按了ctrl+s后

    在windows我们码代码的时候习惯ctrl+s保存: 但在vim中使用ctrl+s之后终端就没反应了... vim: ctrl+s终止屏幕输出,敲的东西都有效,就是看不见. ctrl+q恢复:

  9. 求解数独难题, Sudoku问题(回溯)

    Introduction : 标准的数独游戏是在一个 9 X 9 的棋盘上填写 1 – 9 这 9 个数字,规则是这样的: 棋盘分成上图所示的 9 个区域(不同颜色做背景标出,每个区域是 3 X 3 ...

  10. Python内置函数(30)——super

    英文文档: super([type[, object-or-type]]) Return a proxy object that delegates method calls to a parent ...