我正在解决这个问题:
https://www.hackthissite.org/missions/realistic/3/
上面的网站遭到黑客入侵,我们的工作就是让它恢复原状。我从查看源代码开始。黑客留下了评论:
“网站管理员的注意事项本网站遭到黑客入侵,但并未完全被破坏。旧网站仍然存在。我只是将旧的index.html文件复制到oldindex.html并重新制作了这个。很抱歉给您带来不便。” / p>
因此我去了https://www.hackthissite.org/missions/realistic/3/oldindex.html
然后我点击提交诗歌。在名称字段中,我放了../index.html,在诗歌字段中我放了页面的源代码:
WWW(点)hackthissite.org(点)的任务/逼真/ 3 / oldindex(点)的HTML。
我得到了正确的答案;但是,我不太明白这是如何运作的。
首先,你怎么知道什么时候容易受到影响 目录遍历。我这样做是因为我看了论坛,但是 我怎么知道目录遍历是一个选项?
如果点击阅读诗 - > '诗名'你得到这样的网址:
WWW(点)hackthissite(点)的有机/任务/逼真/ 3 / readpoem(点)PHP?名称=的%20Idiot
在这种情况下,使用../index.html的最终网址不是:
WWW(点)hackthissite(点)的有机/任务/逼真/ 3 /?名称=指数(点)的HTML
不是www(点)hackthissite(点)组织/使命/现实/ 3 /索引(点)html
Sory为(点)。我需要更多声望才能发布更多链接。
答案 0 :(得分:0)
在目录遍历攻击期间,攻击者将提交一个文件名,其中包含允许他们访问目标目录之外的文件的字符。例如,单个点(。)引用当前目录,两个点(..)表示父目录。在攻击期间,目标是使用PHP的提升权限访问和读取受限文件。
这是目录横向易受攻击的PHP代码的一个例子:
$page = $_GET['page'];
$filename = "/pages/$page";
$file_handler = fopen($filename, "r");
$contents = fread($file_handler, filesize($file));
fclose($file_handler);
echo $contents;
在你的挑战中,文件:“readpoem.php”在他的$ _GET ['name']变量中容易受到攻击,并且它发生了类似的事情。
在黑盒测试中,您可以通过跟踪模糊值并分析您的请求/响应流量时产生的错误来检测它。
en.wikipedia.org/wiki/Fuzz_testing
防止这种情况的一种解决方案是检查“禁止”事件,因为有人在此处举例: Preventing Directory Traversal in PHP but allowing paths