command execution xctf 攻防世界 web新手练习区
题目主要描述ping(发送)功能里没有waf(防火墙)
命令却没有弄waf时就要想到命令注入。
看到ping命令就可以利用截断来执行新的命令。
首先测试所有的截断符号:
‘$’ ‘;’ ‘|’ ‘-’ ‘(’ ‘)’
‘反引号’ ‘||’ ‘&&’ ‘&’ ‘}’ ‘{’
'%0a’可以当作空格来用;
利用截断符号配合普通命令简单问题基本就出来;
例如:127.0.0.1 | cat /home/flag.txt
简单的flag就出来了,也可以配合其他的进行;
造成这样的原因:系统提供命令执行类函数主要方便处理相关应用场景的功能.而当不合理的使用这类函数,同时调用的变量未考虑安全因素,就会执行恶意的命令调用,被攻击利用。

进入题目场景后,可以看见有一个需要填ping的地址的输入框

此时在输入框中输入本机地址127.0.0.1,点击PING发送

发现确实返回了ping的结果,我们试着命令拼接看能不能成功,输入 127.0.0.1 | ls ../ ,发现html这个文件夹

接着再输入,查询下一级目录,127.0.0.1 | ls ../../

没有看到相关的信息,再接这查询,127.0.0.1 | ls ../../../

然后还是没看见,但接下来不管再怎么输../内容都没有变化,说明已经查到了子目录了,无法再查下去,此时好像看见一个home的子目录,查看一下,发现有flag文本文件,127.0.0.1 | ls ../../../home

打开这flag.txt文件即可得到flag,127.0.0.1 | cat ../../../home/flag.txt

还可以直接使用target=127.0.0.1 | find / -name "*flag*"查找全部flag的相关信息,可以看到/home/flag.txt,然后直接查看即可得到flag.

扩展:
了解 | , & , && , ||
- windows或linux下:command1 && command2 先执行command1,如果为真,再执行command2。
- command1 | command2 只执行command2。
- command1 & command2 先执行command2后执行command1。
- command1 || command2 先执行command1,如果为假,再执行command2

浙公网安备 33010602011771号