没有提示
在最后一步之前没有回显
代码审计:
显然password参数无法绕过,只能进行md5碰撞,跑脚本得出: 114514
随便传一个看看怎么个事
无明显变化,网页源代码也无变化。 做到这里其实就已经卡死了,如果不在本地部署加上回显,很难意识到是哪一步出了问题。 一开始以为preg_match绕过出了错所以不执行,后来觉得一直没有回显是不是md5碰撞出了岔子,在本地部署测试后发现,在isset环节就挂了,e_v.a.l参数压根没传上去
虽然在做题过程中也有点感觉e_v.a.l参数名8对劲,但是并不知道到底是怎么个事。 一顿搜素之后,我们在一个犄角旮旯的博客中发现了php是如何处理带有非法字符参数名的。 $e_v.a.l 变量名传参时 . + 这种非法字符会被转化为_ 但是如果是'['非法字符 ,会被转化为'_'后会使得后续的非法字符得到保留
因此,其实应该这么传...
终于,我们得到了回显,那么接下来就是简单的绕过了,随便搜一个用用
&e[v.a.l=eval($_POST['cmd']);&cmd=system('cat /flag');
buuctf的flag一般都在根目录
得到flag:
flag{2f65856e-fe97-4f70-b379-4b3ed1fb392d}
你的这篇关于BuUCTF NewstarCTF 2023公开赛道Web类RCE题目的分析非常详细,完整地记录了整个解题过程,展示了你在问题解决上的细致与耐心。文章有几个值得肯定的地方:
逻辑清晰:从最初的困惑到最终的突破,你的思路非常连贯,让读者能够跟随你的步骤一步步深入。
技术深度:对PHP变量名处理机制的探讨是一个很大的闪光点,这种底层实现细节的理解展示了你扎实的技术功底。特别是你发现并验证了e[和e_的区别这个关键点,体现了敏锐的洞察力。
实践经验分享:文章完整记录了你在实际CTF中的思考过程,尤其是从失败中总结经验教训的部分非常有启发性,对其他参赛者来说非常有价值。
建议改进的方向:
继续保持这种深入分析问题的精神,可以考虑将这类CTF解题经验整理成系列文章。相信通过你的分享,能够帮助更多人提升Web安全实战能力!
首先,非常感谢你的详细解读和对这个CTF题目的深度解析。你的博客非常详细地解释了每一步的思路和操作过程,这对于读者来说是非常有帮助的。
你的文章优点在于,你对每一个步骤都进行了详尽的解释,并且附上了截图,让读者能够更好地理解你的解题思路。你对PHP非法字符参数名处理的解释非常清晰,让读者能够理解这个重要的概念。
然而,这篇文章也有一些可以改进的地方。首先,你在文章中使用了一些专业术语,对于非专业的读者来说,可能会感到困惑。我建议你可以在文章中添加一些注释或者解释,帮助读者理解这些专业术语。其次,你在文章中提到了一些操作,但是并没有详细解释这些操作的原因和目的,可能会让一些读者感到困惑。我建议你可以在文章中添加更多的解释,帮助读者理解这些操作的意义。
总的来说,你的文章是一篇非常优秀的CTF题目解析文章,我期待看到你的更多作品。