php2

知识点总结:

一、关于phps

这是个没有想到的网站名,需要记一下

二、urldecode/urlencode

这是将不是英文和数字(准确来说是非ascii码的字符)进行一次url实体编码和解码的行为

注意:在浏览器中,输入的参数是会先经过url实体编码,变成形如%12(%和两个十六进制)的样子,再进行运算

unserialize3

总结:

一、关于序列化和反序列化

总的来说就是php中的对象和字符串之间互相转换的一种方式

1
2
3
4
5
6
7
8
9
10
11
class xctf
{
public $flag = '111';

public function __wakeup()
{
exit('bad requests');
}
}
-----------------------序列化之后-------------------------
O:4:"xctf":1:{s:4:"flag";s:3:"111";}

注意:在序列化之后只会有变量存储在字符串中,对象的方法就不会(大概是因为这些方法一开始就存储在硬盘中而不是内存中,不会在完成一段程序之后被销毁吧)

二、魔法方法

1
2
3
4
5
__wakeup()和__sleep()方法
__wakeup方法针对反序列化
__sleep方法针对序列化
这两个方法的意思都是 当开始序列化或者开始反序列化时
会优先使用这两个魔法方法,在得到序列化(反序列化)结果的同时得到魔法方法使用结果

比如上一个class中,在实现反序列化之前,会先执行

1
exit('bad requests');

三、魔法方法漏洞

1
2
3
4
5
只是针对__wakeup()方法
在给入的参数中属性的数目大于真实的属性数目时,会绕开__wakeup函数
注意:PHP5<5.6.25
PHP7<7.0.10
才行