题目:
小宁写了个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,如图所示。