秦皇岛手机网站制作多少钱,河南省建设厅网网站,东莞多镇街发布最新通告,网站网页怎么设计反序列化补充知识#xff1a;
private变量会被序列化为#xff1a;\x00类名\x00变量名
protected变量会被序列化为: \x00\*\x00变量名
public变量会被序列化为#xff1a;变量名web254 这个逻辑不难#xff0c;自己刚看的时候还奇怪是不是自己哪里想错了#xff0c;因为…反序列化补充知识
private变量会被序列化为\x00类名\x00变量名
protected变量会被序列化为: \x00\*\x00变量名
public变量会被序列化为变量名web254 这个逻辑不难自己刚看的时候还奇怪是不是自己哪里想错了因为没有牵扯到魔术方法啥的但是一看就是挺简单的一个逻辑
思路要获得flag需要触发vipOneKeyGetFlag在该函数里有if函数所以我们要让isVip为true所以需要在login界面的函数中让我们传入的username和password等于ctfShowUser类所赋username和password的值 web255 cookie中将作为截断符号需要编码绕过这里采用url编码 试了下脚本里面有没有声明username和password都不影响主要的就是需要让isVip为true然后要进行编码防止不可见字符影响结果
web256 多了框里面的这条语句也就是说传入的username和password不能一致 web257
construct方法在初始化一个类的时候被触发construct方法会初始化info()这个类在销毁时候触发destruct方法destruct方法触发会调用info()类中的getInfo方法然后返回user对象的值这里我们看到我们想要调用的backDoor类中的方法也叫getInfo()所以我们可以在序列化的时候把__construct方法初始化的类从info改为backDoor web258 if(!preg_match(/[oc]:\d:/i, $_COOKIE[user])){ 匹配cookie里的user是否有c或者o如果有就退出通过在冒号后面加上一个 即可绕过我们在反序列化对象时可以加一个字符串替换将 O: 替换为 O: C: 替换成 C: [极客大挑战 2019]Secret File 对于这种页面直接就是先看源码 有个php文件点进去看 继续查看 发现已经结束了提醒我们回去看看回去看看那两页面长啥样 好像没啥特别的,抓包看到了一个隐藏的文件 最头疼的代码审计它来了
?phphighlight_file(__FILE__); //file文件高亮error_reporting(0); //关闭错误报告$file$_GET[file]; //定义file传送方式为GET if(strstr($file,../)||stristr($file, tp)||stristr($file,input)||stristr($file,data)){ //strstr:找到第一次字符串“../”“tp”“input“”data“输出的位置并输出之后的字符串。说明存在file文件的过滤echo Oh no!;exit();}include($file); //包含文件
//flag放在了flag.php里
?//strstr()和stristr()都用于在一个较长的字符串中搜索指定的子字符串并返回从该子字符串第一次出现的位置开始到字符串末尾的部分。
//两者区别在于前者对大小写敏感后者对大小写不敏感
//即程序过滤了 ../ tp input data
钻个小空子没有过滤flag.php直接访问试试 好吧果然没有东西这个时候就看inputdata等字眼想着可不可以用php伪协议读取文件内容
secr3t.php?filephp://filter/readconvert.base64-encode/resourceflag.php