网安学习Day14

目录

upload_labs通过

level-12

level-13

level-14

level-15

level-16

level-17​

​level-18

level-19​

level-20​

level-21​

今天继续通过uploadlabs来联系文件上传的知识点,上次做到了第11关,接下来就更新剩下的所有的关卡。

upload_labs通过

level-12

网安学习Day14_第1张图片

         显然这里是白名单的方式来设置的规则,但是上传的路径是可以进行控制的,这里通过GET方式提交所以我们通过%00来进行绕过。

网安学习Day14_第2张图片

网安学习Day14_第3张图片

level-13

网安学习Day14_第4张图片

         第十三关与十二关的原理是一样的,只不过在第十三关中,采用的是POST方式来提交,POST方式是不会自动进行解码的,所以需要我们自己帮助它来解码。

网安学习Day14_第5张图片

        其实这里的3.php后面的%00已经被我们手动的解码了。上传成功之后,复制图片链接的地址,我们来访问便发现图片中的php语句被成功执行。

网安学习Day14_第6张图片

level-14

网安学习Day14_第7张图片

        题目已经告诉我们,上传图片,并且结合文件包含漏洞,我们观察其源码。

网安学习Day14_第8张图片

        我们看到有两个函数,一个是@unpack,另一个就是intval函数,其中的unpack函数的作用就是:从二进制字符串对数据进行解包。其中的intval函数是获取变量的整数值,通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。

level-15

网安学习Day14_第9张图片

        getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。 image_type_to_extension 根据指定的图像类型返回对应的后缀名。stripos() 函数查找字符串在另一字符串中第一次出现的位置,stripos函数是不区分大小写的,如果返回值>=0,则查找成功,否则返回false。

level-16

网安学习Day14_第10张图片

         内置函数exif_imagetype函数用来获取图片的类型。

level-17网安学习Day14_第11张图片

        分别通过函数imagecreatefromjpeg、 imagecreatefrompng、imagecreatefromgif来判断图片的类型。所以以上的level14-17关卡都可以通过上传一个图片马结合上文件包含漏洞来实现通关。

网安学习Day14_第12张图片level-18

        第十八关主要考察的是条件竞争的原理,例如我们在编辑一个文件的时候,是不可以将他进行删除、重命名等操作的。网安学习Day14_第13张图片        在这里的代码中,就是先将我们上传的文件临时保存在/upload下面,然后再去判断文件名是否合法以及二次渲染操作,并且将其重命名,所以我们可以在上传文件的瞬间去访问它,导致这个文件的执行,并且不会重命名。这里我们就可以直接上传一个php文件,通过抓包发送到Intruder模块,不断的进行发包,然后去访问它。网安学习Day14_第14张图片

level-19网安学习Day14_第15张图片

        十九关的思路和十八关类似,只不过是先进行了验证文件的后缀名,然后进行上传,上传之后在进行二次渲染。所以我们这里可以通过上传图片马,然后结合文件包含漏洞。网安学习Day14_第16张图片

level-20网安学习Day14_第17张图片

         20关有两种思路,一种是由于move_upload_file()中的$img_path它是通过POST方式来控制save_name的,所以我们可以使用%00截断来修改。

网安学习Day14_第18张图片

        第二种思路就是利用move_upload_file()的特性,它会将后缀的/.去掉。所以我们可以上传文件的后缀名为.php/.来绕过。网安学习Day14_第19张图片

        这里的php后面是存在%00经过解码之后的。同上面的%00截断的方法是一样的。 

level-21网安学习Day14_第20张图片

         数组接受+文件命名。首先会通过一个MIME的信息校验,通过之后查看save_name中是否为空,如果为空则取上传文件中的名字,否则就取save_name中的值作为$file的值,之后判断$file中是否为空,如果不为空,将其中的字符全部转换为小写。然后取$file中的后缀名与白名单中的后缀名进行比较。这里我们就可以设置save_name数组中的值来进行绕过。

网安学习Day14_第21张图片

        在修改之后save_name中存储的信息分别是shell.php/、空(因为这里我们在数据包中没有指定)、jpg,$file_name中的值就变成了shell.php/.jpg。

网安学习Day14_第22张图片

你可能感兴趣的:(学习,系统安全,web安全,安全,网络安全)