PHP登录strcmp函数绕过

挑战

乍一看,登录页面似乎相当简单。

在页面的源代码中并没有那么隐藏是我可以找到表单源的地方。

<!-- source.txt 中的源代码 -->

source.txt 文件很简单,在我们的 GET 请求和 $PASSWORD 变量之间执行了一个简单的 strcmp。

身份验证绕过

从这里开始,我实际上花了很长时间尝试在我的 get 请求中传递对 $FLAGWEB6 的引用,因为这两个变量是相同的。不幸的是,我永远无法让它工作(如果我在这里错过了一些愚蠢的事情,请联系我!)。

无法在这方面取得任何进展,然后我回顾了挑战提供的提示。

一些比较字符串的方法是非常不安全的

经过更多研究,似乎strcmp在将字符串与其他内容进行比较时存在一些问题。

如果我设置 $_GET['password'] 等于一个空数组,那么 strcmp 将返回一个 NULL。由于 PHP 比较中的一些固有弱点,NULL == 0 将返回 true(更多信息)。

考虑到这一点,我向登录页面发送了以下请求。

http://yrmyzscnvh.abctf.xyz/web6/?password[]=%22%22

发送请求后,我收到了标志和随后的 70 分。

PHP strcmp 绕过 – 结论

虽然这不是一个困难的挑战,但我在绕过这个过程中获得了很多乐趣。

猜你喜欢

转载自blog.csdn.net/u012206617/article/details/126333588