wakeup的绕过和private的特殊,直接输出会有不可见字符,所以得进行url编码来进行绕过。
为什么有*号啊大佬
protected属性
分享个知识,有用给我点赞嗷 private属性序列化的时候格式是%00类名%00成员名 protected属性序列化的时候格式是%00*%00成员名
填了个protected和private的属性序列化后编码的坑
好难
1. __wakeup函数当对象数量的值大于真实的就会绕过该函数。 2. 被修饰为protected和private的属性序列化后会变成%00*%00属性名,而%00不可见、 3. cat的替代函数为tac
当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup()函数的执行。
protected属性被序列化的时候属性值会变成:%00*%00属性名,而%00是空字符,在浏览器中会显示为空,但不代表传入时能没有%00,所以最后的payload应该加上%00
wakeup绕过,将属性数量修改成与clase不一致就可以绕过,可以用一个小技巧,把bak下载到本地的时候,自己序列化输出序列值进行base64编码,然后自己在解码,这样就回显不会丢掉\x00,然后在修改属性数量,在url编码。。。。 $select = new ctf('admin','tac flag.php'); echo base64_encode(serialize(@$sel
反序列化 protected 属性的 * 旁边有 \x00 字节,URL编码的时候注意有没有变成空格%20,应该是%00才对
...
评论
760046475ba 2年前
举报
wakeup的绕过和private的特殊,直接输出会有不可见字符,所以得进行url编码来进行绕过。
SUNFENGZHI 3年前
举报
为什么有*号啊大佬
lgb236277486 2年前
举报
protected属性
kjdfklha 3年前
举报
分享个知识,有用给我点赞嗷 private属性序列化的时候格式是%00类名%00成员名 protected属性序列化的时候格式是%00*%00成员名
onerm 3年前
举报
填了个protected和private的属性序列化后编码的坑
奶酪 3年前
举报
好难
a2cai 3年前
举报
1. __wakeup函数当对象数量的值大于真实的就会绕过该函数。 2. 被修饰为protected和private的属性序列化后会变成%00*%00属性名,而%00不可见、 3. cat的替代函数为tac
GitKit 3年前
举报
当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup()函数的执行。
打工人打工魂 3年前
举报
protected属性被序列化的时候属性值会变成:%00*%00属性名,而%00是空字符,在浏览器中会显示为空,但不代表传入时能没有%00,所以最后的payload应该加上%00
yswdlll 3年前
举报
wakeup绕过,将属性数量修改成与clase不一致就可以绕过,可以用一个小技巧,把bak下载到本地的时候,自己序列化输出序列值进行base64编码,然后自己在解码,这样就回显不会丢掉\x00,然后在修改属性数量,在url编码。。。。 $select = new ctf('admin','tac flag.php'); echo base64_encode(serialize(@$sel
0xff0000 3年前
举报
反序列化 protected 属性的 * 旁边有 \x00 字节,URL编码的时候注意有没有变成空格%20,应该是%00才对