[CTF] 攻防世界-command_execution

题目:

小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
界面如图

个人WP(官方的不好或者不全)

随便输入个东西试试

是ping的命令,加上题目说没有waf,猜测应该是能连接其他命令进去的
于是输入 123 && ls试试

没反应,感觉是123ping不通的问题,于是改成127.0.0.1 && ls

ping通了,而且执行了ls命令,所以只要找到flag并输出出来即可

因本人不会find命令,故根据经验去看根目录,输入 127.0.0.1 && ls /

发现并没有 flag,于是再次尝试进入home目录看看,幸好发现了flag

于是用cat命令输出

这个方法的问题:必须ping通了才执行后面的命令,而且需要根据经验去找flag

知识点总结

命令执行

参照用户露思的WP

windows 或 linux 下:
command1 && command2 先执行 command1,如果为真,再执行 command2
command1 | command2 只执行 command2
command1 & command2 先执行 command2 后执行 command1
command1 || command2 先执行 command1,如果为假,再执行 command2
命令执行漏洞(| || & && 称为 管道符)

另外,也可以用;来分隔两个命令,两个命令互不影响,与&效果相同

linux 下:
command1 ; command2 先执行 command2 后执行 command1

find命令

菜鸟编程的Linux find命令
C语言中文网的分类解释
注意:find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。
命令格式

find 搜索路径 [选项] 搜索内容

find 是比较特殊的命令,它有两个参数:

  • 第一个参数用来指定搜索路径;
  • 第二个参数用来指定搜索内容。

按照文件名搜索
选项:

  • -name: 按照文件名搜索;
  • -iname: 按照文件名搜索,不区分文件名大小;
find / -name "flag.txt"  # 从根目录``/``下开始搜索``flag.txt``(区分大小写)
find / -iname "flag.txt"  # 从根目录``/``下开始搜索,不区分大小写
find / -iname "flag.txt" -o -iname "flag"  # 从根目录开始查找``flag.txt`` 或者 ``flag``(万一题目不写后缀呢)
# -o (or)选项代表逻辑或运算,也就是 -o 的两个条件只要其中一个成立,find 命令就可以找到结果。

官方WP

command_execution
[原理]

| 的作用为将前一个命令的结果传递给后一个命令作为输入

&&的作用是前一条命令执行成功时,才执行后一条命令
[目地]

掌握命令拼接的方法
[环境]

windows
[工具]

firefox
[步骤]

1.打开浏览器,在文本框内输入127.0.0.1 | find / -name “flag.txt” (将 | 替换成 & 或 && 都可以),查找flag所在位置,如图所示。

2.在文本框内输入 127.0.0.1 | cat /home/flag.txt 可得到flag,如图所示。

posted @ 2022-12-25 20:05  faf4r  阅读(488)  评论(0)    收藏  举报