100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 74CMS 3.0 SQL注入漏洞前台

74CMS 3.0 SQL注入漏洞前台

时间:2018-12-03 18:28:01

相关推荐

74CMS 3.0 SQL注入漏洞前台

一、 启动环境

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。