2 3 4 5 6 7 8 9 10 11 12

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 
posted @ 2021-11-16 12:24  MrDevil  阅读(64)  评论(0)    收藏  举报