upload-labs 9-12 思路

第9关

这个是对上传的文件并没有进行重命名,只对原文件的名称进行了去除后面".“的处理,那把文件名为"1.php. .”,注意倒数第二位是空格,依然只能在Windows上成功。

第10关

这一关的要求也是比较松的,只是进行了文本替换,利用文本替换的漏洞尝试一下,文本替换函数str_ireplace,只会遍历一次,所以后缀名为demo.pphphp这样,遍历一次,除去嵌套的php,正好只剩下外面的php。

第11关

这关的获取后缀的写法与之前的有所不同,学习一下php字符串的函数,

    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);

strrpos是获取某一字符串在另一字符串最后的位置,这里找的是最后一个点,没有则返回false,substr是截取字符串,这里就是获取后缀。
这一关是白名单限制,而且会在源码里发现是get请求,从url中也可以看出来有一个save_path的变量,如果php版本<5.3.4,而且magic_quotes_gpc为OFF状态,那就可以去做00截断,%00是ASCII里的null,出现在url里,会在此截断,所以在bp里构造出这样的url:

localhost://Pass-11/index.php?save_path=../upload/demo.php%00

这样上传的文件名就变成demo.php了。

第12关

与第11关类系,之不过请求方式变成了post,要注意的是post不会自动转码,需要hex中增加00。

欢迎关注公众号,进一步交流

公众号二维码.jpg

你可能感兴趣的:(文件上传漏洞)