2021/10/10-学习日记

1.BUUCTF刷题-Upload-Labs-Linux 1

第十三关:图马

这一关的要求是上传图马。

1-1 Pass13-题目

两种方法,改文件头或者是做个图马上传。

方法一:改文件头

题中有说,只检测文件内的前两个字节,所以把前两个字节改为合法的文件头即可。

上传php文件,然后bp抓包,给文件最前面加上"GIF89a",这是gif文件的开头,然后进行重放,就可以将文件上传。

1-2

或是抓包后在十六进制中加入"FF D8"这样的文件头,代表jpg文件,均可成功上传。然后利用作者给出的文件包含漏洞即可。

方法二:制作图马

这种方法比较简单,制作一个图马直接上传即可。

准备一个一句话木马和一个图片,在命令行中输入:"copy 图片.jpg/b + 木马.php/a shell.jpg"即可。

第十四、十五关:直接上传图马即可。

第十六关:图片二次渲染

1-3 Pass16-题目

想要尝试着上传不同类型的文件试错,结果发现会返回空页面,盲猜又是BUUCTF背锅。

第十七关:代码审计

源码:

1-4 Pass17-源码

仔细读一下代码的判断逻辑,会发现文件上传后,服务器先把文件保存,然后再进行判断,最后删除掉不合法的文件。那么,我们就可以利用服务器从保存,到删除的这个时间差来进行攻击。

“竞争条件”发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。

首先,对一句话木马进行修改:

');?>

作用是当执行时会生成一个包含一句话木马的.php文件。

然后我们使用burp抓包,send to intruder,重复上传木马。

1-5

在burp进行重放的同时,执行使用脚本重复的去访问所上传的文件,直到访问成功。

1-6

此时,目录下就已经创建了webshell.php文件,直接用蚁剑就可以了。

第十八关:同为条件竞争,不过需上传图马。

第十九关:自己保存文件名


1-7 Pass19-题目

直接设置为1.Php就可以了。

第二十关:大的药来了

按照提示,直接看源码。

1-8 Pass20-源码

代码流程:

首先是对上传文件类型的检查,前几关遇到过,直接用burp修改content-type即可绕过。

之后的三目运算符A?B:C的意思是:检查$_POST是否为空,若为空,则$file=$_FILES['upload_file']['name'];否则$file=$_POST['save_name']。

紧接着会判断$file是不是一个数组,不是的话,会以"."为界分为数组,并最小化。

$ext(后缀名)为数组的最后一个元素。然后判断后缀名是否在白名单中。

然后以$file第一个元素和最后一个元素来重命名文件。

解题:

关键在于:

1-9

想要绕过就必须破坏程序原本的流程,那我们直接把上传的$file改为数组的形式。这样的话就会跳过if的运行段直接执行之后的语句。

1-10
1-11

我们这样修改包。

1:绕过type检查。

2:将"1.php"存储到save_name[0]中。

3:将"jpg"存储到save_name[2]中。

这样,$file就是一个名为save_name的数组。在判断白名单时,取数组最后一个元素也就是save_name[2]="jpg",通过。在储存文件名时,为"save_name[0].save_name[1]"(coiunt(save_name)=2),也就是"1.php."。

1-12

这样就可以把.php文件保存到服务器中,接下来直接连接就好。

你可能感兴趣的:(2021/10/10-学习日记)