[CISCN2021] 初赛 easy_source

[CISCN2021] 初赛 easy_source

[CISCN2021] 初赛 easy_source_第1张图片
国赛,很有经历和意义,希望继续挑战
国赛和大家做的一道题,国赛比较难,只有现在有时间回过去看看:
[CISCN2021] 初赛 easy_source_第2张图片
进去后,界面大概如上图,
[CISCN2021] 初赛 easy_source_第3张图片
提示如上图:

猜测备份文件,实际上当时没扫描出来,试了.svn .swp .swo等,后来别个提示才发现:

实际上前面要加一个点,也就是.index.php.swo
[CISCN2021] 初赛 easy_source_第4张图片
[CISCN2021] 初赛 easy_source_第5张图片
现在看来应该去考虑php的原生类反序列化,是一个典型题目:

使用[反射类]new ReflectionClass("类名"),获得这个类的信息

参考:https://r0yanx.com/2020/10/28/fslh-writeup/

和:CTFshow100:
[CISCN2021] 初赛 easy_source_第6张图片
详情参考php的反射机制:
[CISCN2021] 初赛 easy_source_第7张图片
据题目提示,猜测flag在注释中,也就是所谓的看不到的地方。

直接用php内置类中的ReflectionClass读取User类中的信息:

利用该类返回,flag所在的函数的注释。

构造payload:

?rc=ReflectionMethod&ra=User&rb=a&rd=getDocComment

[CISCN2021] 初赛 easy_source_第8张图片
这样的话就相当于,(reflectionMethod(User,a) ->getDocConmment())

反射其注释

不知道在哪个函数里,所以就更改a,b,c进行抓包,猜测:

然后搞定:
[CISCN2021] 初赛 easy_source_第9张图片
建议看看CTFshow或者了解php的原生类导致的漏洞.

你可能感兴趣的:(writeup,网络安全)