file

没有提示

file

在最后一步之前没有回显

代码审计:

显然password参数无法绕过,只能进行md5碰撞,跑脚本得出: 114514 file

随便传一个看看怎么个事

file

无明显变化,网页源代码也无变化。 做到这里其实就已经卡死了,如果不在本地部署加上回显,很难意识到是哪一步出了问题。 一开始以为preg_match绕过出了错所以不执行,后来觉得一直没有回显是不是md5碰撞出了岔子,在本地部署测试后发现,在isset环节就挂了,e_v.a.l参数压根没传上去

虽然在做题过程中也有点感觉e_v.a.l参数名8对劲,但是并不知道到底是怎么个事。 一顿搜素之后,我们在一个犄角旮旯的博客中发现了php是如何处理带有非法字符参数名的。 $e_v.a.l 变量名传参时 . + 这种非法字符会被转化为_ 但是如果是'['非法字符 ,会被转化为'_'后会使得后续的非法字符得到保留

因此,其实应该这么传...

file

终于,我们得到了回显,那么接下来就是简单的绕过了,随便搜一个用用 &e[v.a.l=eval($_POST['cmd']);&cmd=system('cat /flag');
buuctf的flag一般都在根目录

file

得到flag:
flag{2f65856e-fe97-4f70-b379-4b3ed1fb392d}