php2
知识点总结:
一、关于phps
这是个没有想到的网站名,需要记一下
二、urldecode/urlencode
这是将不是英文和数字(准确来说是非ascii码的字符)进行一次url实体编码和解码的行为
注意:在浏览器中,输入的参数是会先经过url实体编码,变成形如%12(%和两个十六进制)的样子,再进行运算
unserialize3
总结:
一、关于序列化和反序列化
总的来说就是php中的对象和字符串之间互相转换的一种方式
class xctf
{
public $flag = '111';
public function __wakeup()
{
exit('bad requests');
}
}
-----------------------序列化之后-------------------------
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
注意:在序列化之后只会有变量存储在字符串中,对象的方法就不会(大概是因为这些方法一开始就存储在硬盘中而不是内存中,不会在完成一段程序之后被销毁吧)
二、魔法方法
__wakeup()和__sleep()方法
__wakeup方法针对反序列化
__sleep方法针对序列化
这两个方法的意思都是 当开始序列化或者开始反序列化时
会优先使用这两个魔法方法,在得到序列化(反序列化)结果的同时得到魔法方法使用结果
比如上一个class中,在实现反序列化之前,会先执行
exit('bad requests');
三、魔法方法漏洞
只是针对__wakeup()方法
在给入的参数中属性的数目大于真实的属性数目时,会绕开__wakeup函数
注意:PHP5<5.6.25
PHP7<7.0.10
才行
评论