一、 启动环境

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. Ubuntu下pip3的安装、升级、卸载

    1.安装 sudo apt-get install python3-pip 2.升级 sudo pip3 install --upgrade pip 3.卸载 sudo apt-get remove ...

  2. 通过C#在控制台输出各种图形文字

    这不是要准备公司年会了嘛 每个部门抓壮丁,必须安排至少一个节目 想着上去唱首歌算了,被毙,没有部门特色 妈蛋,唱歌没特色,那隔壁在前线工作的部门要表演个啥,抄表? 冥思苦想之下,给节目加了点部门特色, ...

  3. 《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻&quo ...

  4. SpringBoot是如何做到自动装配的

    背景 众所周知,如下即可启动一个最简单的Spring应用.查看@SpringBootApplication注解的源码,发现这个注解上有一个重要的注解@EnableAutoConfiguration,而 ...

  5. 图解python | 简介

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  6. pytest(13)-多线程、多进程执行用例

    有些项目的测试用例较多,测试用例时需要分布式执行,缩短运行时间. pytest框架中提供可用于分布式执行测试用例的插件:pytest-parallel.pytest-xdist,接下来我们来学习这两个 ...

  7. gulp更新4.0后的报错(gulp报Did you forget to signal async completion?)

    本文首发于青云工作室 原文链接为 https://qystudio.ltd/posts/55153.html 缘起 今天我升级了gulp到4.0,在git三件套之后,网站并没有更新,我便登录了gith ...

  8. go面试集锦1

    目录 1.go优缺点 2.go中常量是怎么实现 3.go的值传递和引用 4.go struct能不能比较 5.go协程线程安全吗 6.go中关键字 7.make和new区别 8.defer 9.生产者 ...

  9. 【C#】通过一个案例 彻底了解 Volatile和 内存屏障

    案例如下的.我个人理解是不会出现出现0,0的结果,但是很明显出现了. 说明对我对 Volatile\内存屏障\乱序排序的理解是不对. 今天就通过这个案例,理清这些概念. using System; u ...

  10. 反编译C#代码来看看闭包到底是什么

    原文地址:https://zhuanlan.zhihu.com/p/3161634 C#的闭包,是一个语法糖. 它实质上是将匿名函数转换成一个类,函数作为其中的类方法,并调整外部调用代码来实现的.既然 ...