当前位置: 首页 > news >正文

做微信小程序和网站那个简单金馆长做图网站

做微信小程序和网站那个简单,金馆长做图网站,wordpress评论点评,如何自己做优惠券网站目录 适用版本 环境搭建 文件下载安装 配置文件修改 漏洞分析 适用版本 注&#xff1a;thinkphp版本&#xff1a;5.0.13<ThinkPHP<5.0.15 、 5.1.0<ThinkPHP<5.1.5 环境搭建 文件下载安装 在github上面下载相应版本&#xff0c;下载think文件&#xff0c;…

目录

适用版本

环境搭建

文件下载安装

配置文件修改

漏洞分析


适用版本

注:thinkphp版本:5.0.13<=ThinkPHP<=5.0.155.1.0<=ThinkPHP<=5.1.5

环境搭建

文件下载安装

在github上面下载相应版本,下载think文件,下载framework文件,然后将framework文件修改名字为thinkphp,然后将修改后的framework放在think文件下,然后将think放在网站目录下

配置文件修改

修改数据库连接文件,这里需要提前创建一个数据库文件

修改你的控制器

$username = request()->get('username/a');

这里是接收一个get传参,然后username/a的意思是有username传参username的值就是传参的值没有的话就是默认是a

  db('users')->insert(['username'=>$username]);

这里就是将你输入的值传道数据库里

漏洞分析

漏洞我们可以在framework中的5.0.16版本去看,因为后面的版本肯定是把前面的版本bug修复了。所以可以从里面看到bug是什么样子,看一下5.0.16官方更新了什么东西,到底是把什么修复了。

来看一下啊它的更新提交,然后看看有啥子漏洞

在builder中会有一个修改的地方

下面我们来追一下这个代码,首先输入注入语句

http://127.0.0.1:9999/thinkphp/think-5.0.15/public/index.php?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1

这个需要开启调试模式,注入成功,将user回显了过来

在这里下断,看他一步步执行步骤

首先username的值为0="inc",1="updatexml(1,concat(0x7,user(),0x7e),1)",2="1"

将断点打在插入语句

 看一下他的insert这个函数,数据传输是自己写的值

然后下一步追到builder上,即上面的 $this->builder->insert() 最终调用的是 Builder 类的 insert 方法。 然后调用 parseData 方法来分析并处理数据

然后咱来看一下parseData的方法,下图代码

这个代码中上面第一个红框将data数组中遍历,然后val中就是data的值,然后看第二个红框三个不同的参数对应不同的处理方式,这三个处理方式都可以进行注入,但是insert方法中会对exp进行过滤如果数据中存在 exp ,则会被替换成 exp空格,所以三种处理方式中选项等于exp的无法使用

然后经过parseData处理的数据返回到Builder中的insert,然后下面的sql中的str_replace中的第一个数组被第二个数组中的值进行替换

 上图代码中第二个数组的意思

$sql = str_replace(['%INSERT%', '%TABLE%', '%FIELD%', '%DATA%', '%COMMENT%'],[$replace ? 'REPLACE' : 'INSERT',$this->parseTable($options['table'], $options),implode(' , ', $fields),implode(' , ', $values),$this->parseComment($options['comment']),], $this->insertSql);
$replace ? 'REPLACE' : 'INSERT'

replace有值就是INSERT没值就默认是REPLACE

 $this->parseTable($options['table'], $options)

option中table是users

implode(' , ', $fields)
implode(' , ', $values)

将数组转换为字符串,fileds是username、values就是你写的报错语句

  $this->parseComment($options['comment'])

数据库建表的时候允许你建一个注释comment就是这个注释,这个注释没有的话就为空然后就插入到数据库中,引起报错注入

回来以后数组的值经过替换后变成如下代码

 

http://www.yayakq.cn/news/649053/

相关文章:

  • 生产备案号怎么查询网站企业网站建设存在的典型问题有哪些?
  • 网站建设目录规范坪洲网站建设
  • 晋江做网站的公司博客论坛网站开发
  • 网站开发 适应 手机 电脑什么叫网页
  • 怎样如何做网站赚钱推广渠道
  • 微网站开发平台免费新手做电商哪个平台好
  • 网站怎么做免费推广方案设计用哪些网站
  • 石碣网站仿做政务移动门户网站建设方案
  • wordpress主题演示站点app代理推广平台
  • 十堰做网站的qq邮箱网页版登录
  • 自己用笔记本做网站做百度商桥网站
  • 诸城建设局网站用户体验好的网站
  • 临潼城市建设局网站分类网站 模板
  • 网站菜单 网站导航wordpress+媒体路径
  • 天津市建设工程定额网站常见的网络营销与推广的方式
  • 门户网站制作的公司网站建设v
  • 北京上海网站建设公司怎么生成域名做网站
  • 珠海网站设计公司公司网站还有用吗
  • 完本小说做多的网站wordpress 什么值得买 主题
  • 零起飞网站建设工作室国内新闻
  • 电子商务网站建设 名词解释如何注销网站备案
  • 绍兴网站seo外包加工网手工活
  • 热e国产-网站正在建设中-手机版汉邦未来网站建设
  • 做网站app怎么赚钱建设学校网站前的需求分析
  • 青岛网站建设与推广跨境电商是不是坑
  • 域名搭建网站优设网视频剪辑教程
  • 优化网站排名如何有赞商城官网登录
  • 网站建设需求调研报告青岛网站建设开发外包
  • 宣武做网站网站开发属于软件设计嘛
  • 利用网站做蜘蛛池平陆网站建设