pass-13:
查看提示:
这个只要上传图片码到服务器即可
先绕过文件头检查,添加GIF图片的文件头GIF89a,绕过图片检查
发现上传成功,但是查看图片信息发现被重命名了而且后缀改为了jpg格式的
那么制作图片码上传,将php一句话追加到jpg图片末尾
copy xx.jpg /b + shell.php /a webshell.jpg
用文本打开图片码,在最后发现一句话木马已经被添加到图片末尾了
直接上传即可
pass-14
原理和方法都是跟第pass-13和pass-15一样,都是对文件幻数进行了检测,使用图片码都可以进行绕过。
每种类型的图片内容最开头会有一个标志性的头部,这个头部称为文件幻数
jpg的文件头部格式为:FFD8FFE000104A464946
png的文件头部格式为:89504E470D0A1A0A
gif的文件头部格式为:474946383961
可以使用软件winhex查看和创建伪图片码
pass-16
经过上网查到,这一关的代码对文件的后缀名和MIME类型进行了检查,而且用到了php的imagecreatefromjpeg、imagecreatefrompng、imagecreatefromgif这几个图片处理函数对上传的图片进行了二次渲染生成了新的图片,所以如果在这里上传的是一个普通的图片马,虽然图片马可以上传成功,但是上传的图片马在经过二次渲染后,图片尾部的php代码就会被删除掉,所以在这里不能使用直接在图片尾部添加一句话木马的方式去合成图片马。但是这一关的代码有一个明显的逻辑漏洞,如果这几个二次渲染函数处理的不是一个图片,就会使这几个函数报错,因为这几个二次渲染的函数只会去处理一个图片内部格式正确的图片,所以在这里只需要上传一个后缀名为jpg、png、gif的一句话木马,这样的话上传的一句话木马会绕过后缀名和MIME类型的检查,通过move_uploaded_file上传至服务器,但是遇到二次渲染时,由于上传的不是一个真正的图片,所以二次渲染函数在处理时会因为图片的内部格式报错,从而突破了对图片的二次渲染,这时候页面虽然会显示图片格式不允许,但是上传的一句话木马已经上传到了服务器
还有一种方法就是:将一个正常显示的图片,上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分,将Webshell代码插在该部分,然后上传,需要编写一个python程序来实现
pass-17
通过php代码可以看到对上传的文件后缀做了白名单限制,如果上传的文件后缀如果不是jpg、png、gif的话就会被删除掉。但是这里可以使用竞争上传的方式去突破,同时使用多个进程去上传php文件,php文件的内容是向服务器目录下写一个webshell,之后不断去去访问上传的php文件,如果在删除该php文件之前访问到了该php文件,就会向服务器目录写一个webshell,用python去实现多进程上传
原理是知道了,代码差点,不太会写
pass-18
使用图片码可以直接上传成功
还有一种方法是提交名字为hack.php.7Z的文件,然后用burp抓包,快速重复提交该数据包,会发现没有被重命名,提交成功。
pass-19
用00截断绕过即可,直接上传php文件,在save_name下一行文件名后面添加00.1.jpg,然后在hex编码中修改00编码,上传即可