一、 启动环境

1.双击运行桌面phpstudy.exe软件



2.点击启动按钮,启动服务器环境

二、代码审计

1.双击启动桌面Seay源代码审计系统软件



2.因为74CMS3.0源代码编辑使用GBK编辑,所以首先需要先将编码改成GBK



3.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\74cms),点击确定

漏洞分析

1.点击展开左侧user目录,弹出的下拉列表中双击user_personal.php文件,右侧页面可以看到相关代码。

elseif ($act=='userprofile')
{
$smarty->assign('user',$user);
$smarty->assign('title','个人资料 - 会员中心 - '.$_CFG['site_name']);
$smarty->assign('userprofile',get_userprofile($_SESSION['uid']));
$smarty->display('member_personal/personal_userprofile.htm');
}
elseif ($act=='userprofile_save')
{
$setsqlarr['realname']=trim($_POST['realname'])?trim($_POST['realname']):showmsg('请填写真实姓名!',1);
$setsqlarr['sex']=trim($_POST['sex']);
$setsqlarr['birthday']=trim($_POST['birthday']);
$setsqlarr['addresses']=trim($_POST['addresses'])?trim($_POST['addresses']):showmsg('请填写通讯地址',1);
$setsqlarr['mobile']=trim($_POST['mobile']);
$setsqlarr['phone']=trim($_POST['phone']);
$setsqlarr['qq']=trim($_POST['qq']);
$setsqlarr['msn']=trim($_POST['msn']);
$setsqlarr['profile']=trim($_POST['profile']);
if (get_userprofile($_SESSION['uid']))
{
$wheresql=" uid='".intval($_SESSION['uid'])."'";
!updatetable(table('members_info'),$setsqlarr,$wheresql)?showmsg("修改失败!",0):showmsg("修改成功!",2);
}
else
{
$setsqlarr['uid']=intval($_SESSION['uid']);
!inserttable(table('members_info'),$setsqlarr)?showmsg("修改失败!",0):showmsg("修改成功!",2);
}
}

2.当传入的参数act==’userprofile_save’,然后将POST接收到数据进行更新或者插入,在被代码块中除了头部整体使用过addslashes函数以外,并没有其他的过滤。 6.其中get_userprofile()函数会根据用户的UID进入数据库中进行查询,如果返回数据则进行更新数据,如果没有返回数据,则进行插入数据。 7.假设用户已经填写过个人资料,更新资料会进入updatetable函数,函数在/include/common.fun.php

function updatetable($tablename, $setsqlarr, $wheresqlarr, $silent=0) {
global $db;
$setsql = $comma = '';
foreach ($setsqlarr as $set_key => $set_value) {
if(is_array($set_value)) {
$setsql .= $comma.'`'.$set_key.'`'.'='.$set_value[0];
} else {
$setsql .= $comma.'`'.$set_key.'`'.'=\''.$set_value.'\'';
}
$comma = ', ';
}
$where = $comma = '';
if(empty($wheresqlarr)) {
$where = '1';
} elseif(is_array($wheresqlarr)) {
foreach ($wheresqlarr as $key => $value) {
$where .= $comma.'`'.$key.'`'.'=\''.$value.'\'';
$comma = ' AND ';
}
} else {
$where = $wheresqlarr;
}
return $db->query("UPDATE ".($tablename)." SET ".$setsql." WHERE ".$where, $silent?"SILENT":"");
}

函数中间并没有进行过滤,直接进行遍历传输过来的数组,然后拼接成插入语句进行数据查询。 8.所以,可以在插入数据的时候插入SQL语句,获取管理员Hash。

漏洞利用

1.双击桌面BurpSuite软件,自定义设置浏览器能让BurpSuite软件拦截

2.登录用户,点击“账户管理”—>“个人资料”,输入攻击payload,msn字段主要闭合前边语句,个人简介字段真正的攻击SQL语句



点击保存

需要将msn字段中编码的数据恢复回来 然后点击forwad



再次查看个人资料,发现已经攻击成功

74CMS 3.0 SQL注入漏洞前台的更多相关文章

  1. 74CMS 3.0 SQL注入漏洞后台

    代码审计工具:seay CMS:74CMS3.0 一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软 ...

  2. Beescms_v4.0 sql注入漏洞分析

    Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...

  3. [CMS] UsualToolCMS-8.0 sql注入漏洞【转载】

    原文地址:http://lyscholar.cn/2019/07/30/代码审计-usualtoolcms存在sql注入漏洞/ 0x01 漏洞环境 版本信息:UsualToolCMS-8.0-Rele ...

  4. PHPCMS V9.6.0 SQL注入漏洞分析

    0x01 此SQL注入漏洞与metinfo v6.2.0版本以下SQL盲注漏洞个人认为较为相似.且较为有趣,故在此分析并附上exp. 0x02 首先复现漏洞,环境为: PHP:5.4.45 + Apa ...

  5. 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞

      文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...

  6. 代码审计-MetInfo 6.0.0 sql注入漏洞

    首先漏洞存在于app\system\message\web\message.class.php文件中,变量{$_M[form][id]} 直接拼接在SQL语句中,且验证码检测函数是在SQL语句查询之后 ...

  7. 最新phpcms v9.6.0 sql注入漏洞分析

    昨天爆出来的,但其实在此之前就i记得在某群看见有大牛在群里装逼了.一直也没肯告诉.现在爆出来了.就来分析一下.官方现在也还没给出修复.该文不给出任何利用的EXP. 该文只做安全研究,不做任何恶意攻击! ...

  8. PHPCMS V9.6.0 SQL注入漏洞EXP

    运行于python3.5 import requests import time import re import sys def banner(): msg = '''--------------E ...

  9. PHPCMS9.6.0最新版SQL注入和前台GETSHELL漏洞分析 (实验新课)

    PHPCMS9.6.0最新版中,由于/modules/attachment/attachments.php的过滤函数的缺陷导致了可以绕过它的过滤机制形成SQL注入漏洞,可导致数据库中数据泄漏. 而且在 ...

随机推荐

  1. Solution -「CF 802C」Heidi and Library (hard)

    \(\mathcal{Descriptoin}\)   Link.   你有一个容量为 \(k\) 的空书架,现在共有 \(n\) 个请求,每个请求给定一本书 \(a_i\).如果你的书架里没有这本书 ...

  2. Solution -「CF 575G」Run for beer

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个点 \(m\) 条边的无向图,边有边权,一个人初始速度为 \(1\),每走一条边速度 \(\div10\), ...

  3. Solution -「CF 1349D」Slime and Biscuits

    \(\mathcal{Description}\)   Link.   有 \(n\) 堆饼干,一开始第 \(i\) 堆有 \(a_i\) 块.每次操作从所有饼干中随机一块,将其随机丢到另外一堆.求所 ...

  4. 如何看懂时序图,以DHT21为例

    有很多传感器手册给了我们时序图,我们只要按照时序图操作就行了,还有一些是标准接口,例如SPI,IIC,UART,这些可以利用硬件提供的收发器通信,还有一些我们没有足够的接口,或者没有对应的接口与之通信 ...

  5. 我们一起来学Shell - shell的函数

    文章目录 定义函数 执行不带参数的函数 执行带参数的函数 函数的执行总结 我们一起来学Shell - 初识shell 我们一起来学Shell - shell的变量 我们一起来学Shell - shel ...

  6. Redis 源码简洁剖析 13 - RDB 文件

    RDB 是什么 RDB 文件格式 Header Body DB Selector AUX Fields Key-Value Footer 编码算法说明 Length 编码 String 编码 Scor ...

  7. SpringBoot+JavaMailSender+Redis完整找回密码功能

    导入maven坐标 <parent> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  8. Vue 源码解读(5)—— 全局 API

    目标 深入理解以下全局 API 的实现原理. Vue.use Vue.mixin Vue.component Vue.filter Vue.directive Vue.extend Vue.set V ...

  9. Win10搭建web服务实现文件共享

    配置Internet Information Services服务,实现文件共享. 1.打开控制面板,启用IIS服务. 启用IIS服务,系统会自动搜索并安装IIS服务. 2.管理web服务 此时在浏览 ...

  10. C# Control.BeginInvoke、synchronizationcontext.post、delegate.BeginInvoke的运行原理

    背景 用到的知识点 1.windows消息机制 备注:鼠标点击.键盘等事件产生的消息要放入系统消息队列,然后再分配到应用程序线程消息队列.软件PostMessage的消息直接进入应用程序线程消息队列, ...