1.根据题目,存在源代码备份文件,flag应该在备份文件里,需要扫描后台的目录
我没有别的啥工具,用的dirsearch,这个可以从github上直接下,然后解压之后就可以直接用
cmd 打开 py dirsearch.py -u 路径 -e * -s 4(简单解释一下,u后填上需要爆破的后台路径,e是必填项,填上*因为确实不知道格式,重点说一下-s 这后面跟的是一个浮点,表示的是请求的延迟,这道题写2也行,因为爆破需要大量的请求,会爆出一堆429,这个http错误代码表示的就是因为请求太多,后台拒绝了请求,导致无法访问,我看网上有些直接从429上爆出压缩文件的,这个都是错的,都是遍历了,但是无有效反馈,加上延迟,就会正常显示200。具体的dirsearch的方法我收藏了个中文手册,有需要可以简单学习一下)
2.爆到aba8bbe3-6250-4e78-b2b6-cf5b1e99f636.node4.buuoj.cn:81/www.zip
下载解压压缩包,js文件一般不会存flag,查看flag,index,class这三个php文件
通过代码审计,Index获得select参数,再进行反序列化,传入class文件,class文件里当username=admin password=100,且绕过wakeup函数时能得到flag
3.先进行反序列化解析,可以参考相关博客,我直接写出payload
index.php?select=O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
4.wakeup函数绕过的漏洞是,当序列化函数的里的属性个数大于真实个数的时候,即可绕过,所以:
index.php?select=O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
5.函数没有走完,仔细审计了一下,在构造序列化函数的时候,因为对象是private,所以构造序列化的时候:
index.php?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
主要知识点是序列化和反序列化