开始
进入题目有两个按钮,一个是登陆,一个是加入,那么我们先点加入创建一个账号。
创建账号后发现这个admin可以点击,那我们点击试一试。
发现这里传了一个参数,那我们试一试有没有注入点。输入单引号发现报错。
用order by 语句测试字段4不报错,5报错,证明这里有5个字段。
接下来我们用union select 联合查询查看回显
发现被拦截了,看看可不可以绕过。我们用内联注释绕过。
发现在2的位置有回显,所以可以在这里注入,不过我在注册的页面抓了下包,发现在join页面这里存在post注入,且可以直接用sqlmap跑,可以上sqlmap那当然不手工(露出猥琐的笑容)。
跑了下库,在用--current-db参数跑了下当前在什么库下面。
跑出在fakebook库下面
接下来就是跑fakebook的表字段等,这里就不写了,这题有点麻烦,写的也是有点烦躁,最主要疫情在家人也有点烦躁。
这里是爆出的字段,先看看data字段里面的内容。
大家应该看懂了吧,没看懂的话看这里
反序列化,现在大概方向知道了,通过这里的反序列化,我们可以传入序列化参数,让反序列化进行解析。那我们先构造一个payload看看可不可以解析。
发现可以正常解析,现在我们就要想办法读取flag了。这里运用到了CSRF
当然说到CSRF收集到的一些信息,一般我做CTF的题目都会有一些套路步骤,上来就是把这个网站用bp的spider爬行一下
就爬了个这个当然是没什么用,爬不到那就上御剑扫下后台,后台没扫到但是扫到了一个robots.txt文件,各位师傅肯定都知道这个文件是干嘛的,我访问了下。
发现不然爬的有个user.php的备份文件。我们在访问一下。
是一个可以下载的文件
打开看看
一段代码,简单审计一下,发现这里以get的方式传入url,但是下方没有对get过来的url做任何过滤和白名单,或黑名单的保护措施,所以这里的get存在CSRF。
最后的地方匹配一个正则,满足的才会被get传入
不懂正则的可以参考https://www.cnblogs.com/zery/p/3438845.html
现在就可以尝试读取我们的flag了,当然有了CSRF我们还需要知道我们读取flag的路径,路径在哪里了,看这里。
有了路径就是构造payload,当然payload我也是构造了好久,这里需要一个file伪协议进行读取。
发现解析成功,没有报错,但是还是没有flag,错肯定是没有错了,成功解析了,查看了下源代码。
发现一个iframe标签
访问里面的地址
又是一片空白,在继续查看源代码。
总算是找到了flag!
总结
题目的单个知识点都不难,但是结合到一起就有点繁琐,而且里面的一些小坑有点搞心态,不过总体来说这题出的还是比较好的,每个地方都有逻辑可循!